精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何高效地管理網站靜態資源

開發 前端
靜態資源管理系統的核心是對靜態資源進行調度,可以很靈活的適應各種性能優化和差異化處理的場景,來達到更快、更可靠、低成本的自動化項目交付。但是同時這個系統十分復雜,承載著各種職責,這個系統本身會成為整個網站的關鍵節點和瓶頸。

背景

隨著互聯網開發和迭代速度越來越快,網站也變得越來越龐大,存在大量靜態資源,我們原有管理靜態資源的方式變得越來越不適用,就如同封面圖一樣,靜態資源之間的關系錯綜復雜,給工程師帶來了很多麻煩:

  • 人工管理依賴的噩夢,工程師需要頻繁管理和維護每個頁面需要的 JS & CSS 文件,包括靜態資源之間的依賴關系以及加載順序等。
  • 性能優化成本高且不可持續性,為了提高網站性能,工程師總是在忙于優化頁面靜態資源的加載,包括動態加載靜態資源、按需加載靜態資源和修改靜態資源合并策略等,但是過了一段時間性能又降下來了,又需要周而復始的重復。
  • 靜態資源差異化的挑戰,PC和無線的適配,不同的網絡和終端需要適配相應的靜態資源;當網站需要支持國際化的時候,需要對不同的國家進行差異化處理,返回不同的靜態資源,這些需求對原有的靜態資源管理方式提出巨大挑戰。
  • 缺少快速迭代和試驗新功能的有效支持,從開發到上線流程繁瑣,導致項目迭代周期長

每天工程師都會提交大量的 new feature/bug fixes,每次項目發布和迭代都面臨著以上的問題,是否可以有一套系統幫助我們管理/調度靜態資源來減少人工管理靜態資源成本和風險,來達到更快、更可靠、低成本的自動化項目交付。在實際項目開發中,我們進行了大量探索和試驗,實現了一套 “靜態資源管理系統”,對靜態資源進行全流程的管理和調度:

  • 幫助工程師管理靜態資源間的依賴以及資源的加載
  • 管理靜態資源版本更新與緩存,自動處理CDN
  • 自動生成最優的靜態資源合并策略,實現網站自適應優化
  • 實現靜態資源的分級發布,快速迭代,輕松回滾
  • 根據國際化和終端的差異,送達不同的資源給不同的用戶

下面本文將會介紹我們是如何通過靜態資源系統來高效管理靜態資源的。

架構

arc

靜態資源管理系統主要包含Compile、Sourcemap、Backend-Framework、Frontend-Loader幾個核心模塊:

  • Compile,對靜態資源進行編譯處理,包括對靜態資源進行預處理,url 處理(添加md5戳、添加CDN前綴),優化(壓縮、合并),生成 Sourcemap 等
  • Sourcemap,在 compile 階段系統會掃描靜態資源,建立一張靜態資源關系表,記錄每個靜態資源的部署路徑以及依賴關系等信息
  • Backend-Framework,后端運行時根據組件使用情況來調度靜態資源,為前端返回頁面渲染需要的資源。
  • Frontend-Loader,前端運行時根據用戶的交互行為動態請求靜態資源。

靜態資源管理系統通過自動化工具對靜態資源進行預處理并產出 Sourcemap,SourceMap 中記錄著靜態資源的調度信息,這樣框架在運行時會根據 SourceMap 中提供的調度信息自動為用戶進行靜態資源調度,不僅可以做到送達不同資源給不同用戶,還可以自適應優化靜態資源合并和加載。

自動管理靜態資源依賴

靜態資源管理系統為工程師提供了聲明依賴關系的語法和規則,在 compile 階段系統會掃描靜態資源,建立一張靜態資源關系表,記錄每個靜態資源的部署路徑以及依賴關系等信息。

在html中聲明依賴

在項目的 index.html 里使用注釋聲明依賴關系:

  1. <!--  
  2.     @require demo.js  
  3.     @require "demo.css"  
  4. --> 

在 SourceMap 中則可看到:

  1. {  
  2.     "res" : {  
  3.         "demo.css" : {  
  4.             "uri" : "/static/css/demo_7defa41.css",  
  5.             "type" : "css"  
  6.         },  
  7.         "demo.js" : {  
  8.             "uri" : "/static/js/demo_33c5143.js",  
  9.             "type" : "js",  
  10.             "deps" : [ "demo.css" ]  
  11.         },  
  12.         "index.html" : {  
  13.             "uri" : "/index.html",  
  14.             "type" : "html",  
  15.             "deps" : [ "demo.js", "demo.css" ]  
  16.         }  
  17.     },  
  18.     "pkg" : {}  
  19. }  
  20.  

在js中聲明依賴

支持識別 js 文件中的 require 函數,或者 注釋中的 @require 字段 標記的依賴關系,這些分析處理對 html 的 script 標簽內容 同樣有效。

  1. //demo.js  
  2. /**  
  3.  * @require demo.css  
  4.  * @require list.js  
  5.  */  
  6. var $ = require('jquery');  
  7.  

在SourceMap中則可看到:

  1. {  
  2.     "res" : {  
  3.         ...  
  4.         "demo.js" : {  
  5.             "uri" : "/static/js/demo_33c5143.js",  
  6.             "type" : "js",  
  7.             "deps" : [ "demo.css", "list.js", "jquery" ]  
  8.         },  
  9.         ...  
  10.     },  
  11.     "pkg" : {}  
  12. }  
  13.  

在css中聲明依賴

支持識別 css 文件 注釋中的 @require 字段 標記的依賴關系,這些分析處理對 html 的 style 標簽內容 同樣有效。

  1. //demo.js  
  2. /**  
  3.  * @require demo.css  
  4.  * @require list.js  
  5.  */  
  6. var $ = require('jquery');  
  7.  

在SourceMap中則可看到:

  1. {  
  2.     "res" : {  
  3.         ...  
  4.         "demo.js" : {  
  5.             "uri" : "/static/js/demo_33c5143.js",  
  6.             "type" : "js",  
  7.             "deps" : [ "demo.css", "list.js", "jquery" ]  
  8.         },  
  9.         ...  
  10.     },  
  11.     "pkg" : {}  
  12. }  
  13.  

#p#

按需加載靜態資源

在靜態資源管理系統接管了項目中的靜態資源后,可以知道靜態資源的運行情況以及依賴關系,然后可以做到自動為頁面按需加載靜態資源,下面通過一個例子來詳細講解:

sidebar.tpl 中的內容如下,

  1. <!--  
  2.     @require "common:ui/dialog/dialog.css"  
  3. --> 
  4.  
  5. <a id="btn-navbar" class="btn-navbar"> 
  6.     <span class="icon-bar"></span> 
  7.     <span class="icon-bar"></span> 
  8.     <span class="icon-bar"></span> 
  9. </a> 
  10.  
  11. {script}  
  12.     var sidebar = require("common:ui/dialog/dialog.js");  
  13.     sidebar.run();  
  14. {/script}  
  15.  
  16. {script}  
  17.     $('a.btn-navbar').click(function() {  
  18.         require.async('common:ui/dialog/dialog.async.js', function( dialog ) {  
  19.             dialog.run();  
  20.         });  
  21.     });  
  22. {/script}  
  23.  

對項目編譯后,自動化工具會分析依賴關系,并生成 sourcemap,如下

  1. "common:widget/sidebar/sidebar.tpl": {  
  2.     "uri": "common/widget/sidebsr/sidebar.tpl",  
  3.     "type": "tpl",  
  4.     "extras": {  
  5.         "async": [  
  6.             "common:ui/dialog/dialog.async.js"  
  7.         ]  
  8.     },  
  9.     "deps": [  
  10.         "common:ui/dialog/dialog.js",  
  11.         "common:ui/dialog/dialog.css"  
  12.     ]  
  13. }  
  14.  

在 sidebar 模塊被調用后,靜態資源管理系統通過查詢 sourcemap 可以得知,當前 sidebar 模塊同步依賴 sidebar.js、sidebar.css,異步依賴 sdebar.async.js,在要輸出的 html 前面,生成靜態資源外鏈,我們得到最終的 html

  1. <link rel="stylesheet" href="/static/ui/dialog/dialog_7defa41.css"> 
  2.  
  3. <a id="btn-navbar" class="btn-navbar"> 
  4.     <span class="icon-bar"></span> 
  5.     <span class="icon-bar"></span> 
  6.     <span class="icon-bar"></span> 
  7. </a> 
  8.  
  9. <script type="text/javascript" src="/static/common/ui/dialog/dialog$12cd4.js"></script> 
  10. <script type="text/javascript"> 
  11.     require.resourceMap({  
  12.         "res": {  
  13.             "common:ui/dialog/dialog.async.js": {  
  14.                 "url": "/satic/common/ui/dialog/dialog.async_449e169.js"  
  15.             }  
  16.         }  
  17.     });  
  18. </script> 
  19. <script type="text/javascript"> 
  20.     var sidebar = require("common:ui/dialog/dialog.js");  
  21.     sidebar.run();  
  22.  
  23.     $('a.btn-navbar').click(function() {  
  24.         require.async('common:ui/dialog/dialog.async.js', function( dialog ) {  
  25.             dialog.run();  
  26.         });  
  27.     });  
  28. </script> 
  29.  

如上可見,后端模塊化框架將同步模塊的 script url 統一生成到頁面底部,將 css url 統一生成在 head 中,對于異步模塊(require.async)注冊 resourceMap 代碼,框架會通過 {script} 標簽收集到頁面所有 script,統一管理并按順序輸出 script 到相應位置。

當我們想對模塊進行打包,只需要使用一個 pack 配置項,對網站的靜態資源進行打包,這樣在 SourceMap 中,所有被打包的資源會有一個 pkg 屬性指向該表中的資源,而這個資源,正是我們配置的打包策略。這樣靜態資源系統可以根據對應信息找到某個資源最終被合并后的 package 的 url,最后把這個 url 返回給頁面。

自動合并靜態資源

靜態資源管理系統可以根據產品線上靜態資源使用的數據,自動完成靜態資源合并工作,對工程師完全透明,解決手工維護的未及時排除廢棄資源、不可持續、成本大等問題。

arc

詳情請見 靜態資源自動合并;

靜態資源版本更新與緩存

靜態資源管理系統采用基于文件內容的 hash 值來控制靜態資源的版本更新,如下所示:

  1. <script type="text/javascript" src="a_8244e91.js"></script> 
  2.  

其中”_82244e91 ”這串字符是根據 a.js 的文件內容進行 hash 運算得到的,只有文件內容發生變化了才會有更改。這樣做的好處有:

  • 線上的 a.js 不是同名文件覆蓋,而是文件名 +hash 的冗余,所以可以先上線靜態資源,再上線 html 頁面,不存在間隙問題;
  • 遇到問題回滾版本的時候,無需回滾 a.js,只須回滾頁面即可;
  • 由于靜態資源版本號是文件內容的 hash,因此所有靜態資源可以開啟永久強緩存,只有更新了內容的文件才會緩存失效,緩存利用率大增;
  • 修改靜態資源后會在線上產生新的文件,一個文件對應一個版本,因此不會受到構造 CDN 緩存形式的攻擊

靜態資源管理系統會在 compile 階段識別文件中的定位標記(url),計算對應文件的 hash,并自動替換為 '文件名 + hash',無需工程師手動修改。

靜態資源分級控制

靜態資源管理系統可以對靜態資源做進一步控制(Controlling Access to Features)以達到分級發布的效果,主要包括以下兩塊核心功能,

  • feature flags, 用來控制 feature 對應的靜態資源是否加載
  • feature flippers, 可以靈活控制 feature,不僅僅是 on 或 off, 可以做到類似'3%用戶可以訪問此功能'、'對內部所有員工開放' 類似的效果

通過以上的控制我們可以輕松做到發布一個新功能,讓這個功能只對部分用戶可訪問,當功能完善后對所有用戶開放,如果功能出現問題直接一鍵回滾即可。

在項目中的類似代碼如下:

  1. {if $config.some eq 'Fred'}  
  2.     do something new and amazing here.  
  3. {elseif $config.some eq 'Wilma'}  
  4.     do the current boring stuff.  
  5. {else}  
  6.     whatever you are.  
  7.  

靜態資源管理系統會根據配置在運行時對 $config.some 進行干預.實現對靜態資源的訪問權控制,通過運行時的配置(feature flag)來控制靜態資源,還可以支持“主干開發”的方式,來達到更快的迭代速度。

我們還可以實現國際化的需求,原理同分級發布,在運行時的做一些更細致的差異化處理

  1. {if $lang == 'zh-CN'}  
  2.     zh-CN  
  3. {/if}  
  4.  

總結

靜態資源管理系統的核心是對靜態資源進行調度,可以很靈活的適應各種性能優化和差異化處理的場景,來達到更快、更可靠、低成本的自動化項目交付。但是同時這個系統十分復雜,承載著各種職責,這個系統本身會成為整個網站的關鍵節點和瓶頸。

作者:walter (http://weibo.com/u/1916384703) - F.I.S

原文鏈接:http://fex.baidu.com/blog/2014/04/fis-static-resource-management/

責任編輯:林師授 來源: 百度FEX
相關推薦

2009-09-09 15:24:06

2010-08-18 09:58:57

網絡流量

2009-09-08 22:52:30

網絡流量管理

2021-03-08 07:46:53

Git開源控制系統

2010-05-17 17:44:56

IIS6.0

2022-05-11 09:51:10

云計算公共云

2021-08-05 18:34:55

IntelliJ ID高效

2023-04-25 10:22:00

云計算網絡部署

2019-09-27 12:44:03

數據建模企業數據存儲

2021-05-31 07:57:00

拼接字符串Java

2011-12-06 13:30:45

2009-07-27 13:32:37

2023-11-28 08:22:05

goroutine語言

2019-03-22 14:20:26

管理多云云計算

2019-03-11 08:00:00

區塊鏈區塊鏈技術管理網絡

2010-03-22 21:06:35

2012-04-23 15:01:19

2015-10-22 13:40:53

番茄工作法時間管理GTD

2020-06-03 09:00:20

firewall-cm網絡服務系統運維

2023-01-31 17:36:22

IPLinux網絡
點贊
收藏

51CTO技術棧公眾號

制服丝袜成人动漫| 成人污视频在线观看| 色妞欧美日韩在线| 91福利视频免费观看| 黄色漫画在线免费看| 国产日韩欧美不卡| 91久久久一线二线三线品牌| 在线观看黄网站| 国产精品中文字幕亚洲欧美| 欧美欧美欧美欧美首页| 青青青在线视频播放| 自拍视频在线免费观看| av午夜精品一区二区三区| 国产精品自产拍在线观| 久草精品视频在线观看| 午夜久久免费观看| 亚洲视频在线看| 国产老头和老头xxxx×| 日韩在线观看不卡| 性做久久久久久免费观看| 性欧美大战久久久久久久免费观看| 精品久久人妻av中文字幕| 日韩经典中文字幕一区| 91国产精品视频在线| www.毛片com| 青青一区二区三区| 亚洲免费高清视频| 国产69视频在线观看| 在线免费成人| 欧美色成人综合| 色婷婷综合久久久久中文字幕| 日韩成人伦理| 亚洲欧美激情插| 宅男av一区二区三区| 国产一区二区三区不卡在线| 99视频国产精品| 成人高清在线观看| 99在线小视频| 国产一区二区成人久久免费影院| 国产mv免费观看入口亚洲| 91午夜视频在线观看| 国产综合久久| 欧美大片大片在线播放| 欧美黑人性猛交xxx| 国产精品久久久久蜜臀| 尤物99国产成人精品视频| 久久久久久久久免费看无码| 奇米影视777在线欧美电影观看| 日韩欧美成人激情| 人妻精油按摩bd高清中文字幕| 亚洲色图图片| 欧美一区二区三区在线观看| 中文字幕亚洲影院| 精品国模一区二区三区欧美| 91精品国产手机| 国产男女无遮挡猛进猛出| 美女精品视频在线| 精品嫩草影院久久| 男人舔女人下面高潮视频| 国产视频第二页| 韩国理伦片一区二区三区在线播放| 国产精品www| 成人黄色三级视频| 美女视频网站久久| 成人免费网视频| 超碰人人人人人人| 不卡高清视频专区| 欧美成ee人免费视频| 免费动漫网站在线观看| 国产欧美日韩视频在线观看| 亚洲欧美国产精品桃花| 欧美成年黄网站色视频| 亚洲欧美色图小说| 免费视频爱爱太爽了| 美女的胸无遮挡在线观看| 欧美午夜视频一区二区| 亚洲综合激情在线| 国产成人av电影在线观看| 91在线观看欧美日韩| 亚洲AV无码一区二区三区性 | 91在线观看地址| 奇米视频888战线精品播放| av在线资源站| 一区二区三区在线观看国产| 日韩中文字幕在线视频观看| 亚洲一区二区三区四区| 欧美一区三区四区| 自拍视频一区二区| 久久国产成人精品| 欧美激情成人在线视频| 黄色片中文字幕| 国产一区在线观看麻豆| 久久综合入口| 麻豆网站在线看| 九色精品美女在线| avhd101老司机| 中文字幕午夜精品一区二区三区| 久久露脸国产精品| 国产一级片免费视频| 国产精品亚洲第一区在线暖暖韩国| 国产精品一区二区三区精品 | 韩国成人福利片在线播放| 国产精品久久久久久久天堂第1集| 国产高清在线观看| 亚洲综合丝袜美腿| 亚洲一区日韩精品| 亚洲电影一级片| 欧美另类在线播放| wwwwww在线观看| www.欧美日韩| 潘金莲一级淫片aaaaaa播放1| 成人性教育av免费网址| 欧美岛国在线观看| 91视频青青草| 热久久免费视频| 久久久神马电影| 日本在线视频www鲁啊鲁| 欧美视频一二三区| 中文字幕免费高清| 99精品视频免费| 波多野结衣成人在线| 免费av网站在线观看| 色婷婷av一区二区三区gif | 国产亚洲一区二区三区四区 | 精品99re| 一区二区三区免费看视频| 毛片一区二区三区四区| 亚洲欧美日本国产| 久久久国产精品x99av| 成人免费视频国产免费| a级精品国产片在线观看| 黄色影视在线观看| 亚洲精品乱码日韩| 中文字幕亚洲无线码在线一区| 久久免费激情视频| 不卡视频一二三四| 国产69精品久久久久999小说| 日本高清久久| 裸体女人亚洲精品一区| 一级做a爰片久久毛片16| 欧美激情中文字幕| 久久久国产欧美| av中文字幕一区二区| 国产精品白嫩美女在线观看 | 中文字幕精品av| 午夜精品免费观看| 国产婷婷色一区二区三区在线| 欧美精品99久久| 日韩三级毛片| 热门国产精品亚洲第一区在线| 天天射,天天干| 欧美午夜电影在线| 非洲一级黄色片| 麻豆精品一二三| 日韩视频在线观看视频| 精品一区二区三区免费看| 欧美精品一区在线播放| 国精品人妻无码一区二区三区喝尿| 亚洲一区成人在线| 在线免费播放av| 老司机精品福利视频| 欧美日韩一区二区三区免费| 日韩精选视频| 精品国偷自产在线视频| 午夜精品久久久久久久91蜜桃| 亚洲午夜久久久久久久久电影网| 久久福利小视频| 肉肉av福利一精品导航| 手机福利在线视频| av不卡一区二区| 久久久久久一区二区三区 | 在线观看欧美视频| 国产又黄又猛又爽| 亚洲444eee在线观看| 无码 人妻 在线 视频| 精品夜夜嗨av一区二区三区| 高清无码视频直接看| 伊人久久大香线蕉综合网蜜芽| 国产激情久久久久| 最近中文字幕免费mv2018在线| 亚洲国产精品999| 一级黄色在线观看| 洋洋av久久久久久久一区| 亚洲中文字幕无码av| 麻豆91精品视频| 久久这里只有精品23| 欧美日韩一区二区综合| y111111国产精品久久婷婷| 日韩伦理精品| 亚洲天堂色网站| 国产美女免费视频| 色综合色狠狠天天综合色| 黄色a级片在线观看| 久久精品夜色噜噜亚洲aⅴ| 色婷婷激情视频| 久久精品麻豆| 国产精品国三级国产av| 激情综合网站| 成人在线免费网站| 欧美在线一级| 欧洲一区二区视频| 青草av在线| 精品国产一区二区三区久久久| 日韩一级片免费看| 制服丝袜亚洲精品中文字幕| 黄色一级视频免费看| 亚洲综合色自拍一区| 亚洲色图27p| 久久综合九色综合欧美98| 亚洲AV无码久久精品国产一区| 日韩国产成人精品| 免费在线激情视频| 国内精品亚洲| 在线视频一区观看| 日本电影一区二区| 欧美久久电影| 婷婷精品在线| 国产欧美韩日| 99a精品视频在线观看| 成人激情黄色网| 日韩毛片在线| 国产精品91在线观看| 二区三区不卡| 欧美有码在线视频| 91高清视频在线观看| 欧美激情精品久久久久久久变态| 免费黄色在线观看| 日韩中文字幕在线免费观看| 国产专区在线| 亚洲欧美在线免费观看| 日本福利在线观看| 精品亚洲国产成av人片传媒| 日本黄色大片视频| 亚洲护士老师的毛茸茸最新章节| a级片在线播放| 日韩一区二区三免费高清| 国产精品午夜福利| 51久久夜色精品国产麻豆| 国产一区二区三区四区视频| 欧美日韩欧美一区二区| 亚洲图片小说视频| 欧美亚洲一区二区在线观看| 中国一级特黄视频| 欧美乱熟臀69xxxxxx| 在线观看中文字幕码| 欧美日韩电影在线播放| 在线免费观看高清视频| 欧美日韩在线观看一区二区| 一区二区三区播放| 91精品国产福利| 精品国产av一区二区三区| 日韩一区二区高清| 国模无码一区二区三区| 亚洲高清在线观看| 日本亚洲一区| 一区二区三区四区视频| 在线观看免费黄色| www.国产一区| 欧美xxxx免费虐| 538国产精品一区二区免费视频| 在线男人天堂| 国产精品看片资源| 狂野欧美xxxx韩国少妇| 九色综合日本| 日韩在线中文| 丁香婷婷综合激情| 久久国产高清| 亚洲午夜激情影院| 成人丝袜高跟foot| 精品欧美一区二区久久久| 国产精品看片你懂得| 国产亚洲精品久久久久久打不开| 精品国产户外野外| 亚洲天堂手机在线| 亚洲国产成人精品久久久国产成人一区| 无码国产精品一区二区免费16 | www.成人av| 自拍欧美一区| 天天在线免费视频| 免费国产自线拍一欧美视频| 天天干天天av| 91视频观看视频| 亚洲一区电影在线观看| 精品毛片三在线观看| 亚洲天堂网视频| 日韩成人网免费视频| 日本韩国在线视频爽| 亚州成人av在线| 日韩欧乱色一区二区三区在线 | 国产精品久久久久久久天堂 | 欧美一区国产一区| 亚洲区综合中文字幕日日| 男女激情无遮挡| 国产在线视频不卡二| 欧美多人猛交狂配| 亚洲国产精品久久一线不卡| 在线观看国产黄| 亚洲男人天堂久| 丁香花在线高清完整版视频| 国产精品视频免费在线| 天堂一区二区三区四区| 亚洲爆乳无码精品aaa片蜜桃| 久久一区激情| 亚洲精品乱码久久| 亚洲精品成a人| 91久久久久久久久久久久| 亚洲欧美日韩精品| 678在线观看视频| 国产在线观看91精品一区| 羞羞答答一区二区| av高清在线免费观看| 国产一区二区三区久久久 | 国产精品成人免费一区久久羞羞| 欧美国产日本视频| 一级黄色免费网站| 亚洲精品国产精品国自产在线| av免费在线网站| 国产男女猛烈无遮挡91| av亚洲免费| 国产福利视频在线播放| 99精品久久只有精品| 久久久久免费看| 日韩欧美国产一二三区| 黄色网在线播放| 国产欧美日韩中文| 日本a口亚洲| 欧美精品久久久久久久久25p| 国产日韩综合av| jizz国产在线观看| 亚洲人成在线观看| 欧美××××黑人××性爽| 免费中文日韩| 亚洲欧美日韩国产一区| 日韩一级视频在线观看| 激情懂色av一区av二区av| 人妻偷人精品一区二区三区| 欧美激情第99页| h视频久久久| 亚洲人成无码网站久久99热国产| 风间由美一区二区三区在线观看| 久久久www成人免费毛片| 精品剧情v国产在线观看在线| 亚洲精品白浆| 国产精品区一区二区三含羞草| 欧美日韩精品| 国产一线在线观看| 欧美日韩亚洲精品一区二区三区| 五月天婷婷在线播放| 欧美孕妇孕交黑巨大网站| 国产成人一区二区三区影院| 亚洲一二三区av| 一区在线播放视频| 成人av无码一区二区三区| 国内精品伊人久久| 精品一区在线| 日韩av片网站| 一区二区三区中文字幕电影 | 91玉足脚交白嫩脚丫在线播放| aaa人片在线| 在线播放日韩专区| 麻豆一区在线| 免费观看国产精品视频| 久久人人超碰精品| 伊人亚洲综合网| 久久91亚洲人成电影网站| 狠狠一区二区三区| 人妻无码视频一区二区三区 | 91精品一区二区三区四区| 丁香一区二区三区| 波多野结衣啪啪| 久久精品亚洲一区| 女一区二区三区| 九九九在线观看视频| 亚洲男人的天堂av| 视频二区在线| 国产日韩欧美综合| 亚洲黄色大片| 摸摸摸bbb毛毛毛片| 日韩欧美国产精品| 美女一区网站| 国产激情片在线观看| 91论坛在线播放| 国产女同91疯狂高潮互磨| 4388成人网| 91久久久精品国产| 一本色道综合久久欧美日韩精品| 欧美揉bbbbb揉bbbbb| 97在线超碰| 中国成人在线视频| 99re成人在线| 国产特黄一级片| 日韩免费在线免费观看| 欧美一区高清| 精品人妻无码一区二区三区换脸| 欧美一区二区黄色| 欧美日韩精品一区二区三区视频| 日韩欧美精品免费| 国产精品久久久久精k8| 视频三区在线观看| 91视频婷婷|