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

阮一峰:網頁性能管理詳解

移動開發
你遇到過性能很差的網頁嗎?這種網頁響應非常緩慢,占用大量的 CPU 和內存,瀏覽起來常常有卡頓,頁面的動畫效果也不流暢。你會有什么反應?我猜想,大多數用戶會關閉這個頁面,改為訪問其他網站。作為一個開發者,肯定不愿意看到這種情況,怎樣才能提高性能呢?本文將詳細介紹性能問題的出現原因,以及解決方法。

你遇到過性能很差的網頁嗎?

這種網頁響應非常緩慢,占用大量的 CPU 和內存,瀏覽起來常常有卡頓,頁面的動畫效果也不流暢。

你會有什么反應?我猜想,大多數用戶會關閉這個頁面,改為訪問其他網站。作為一個開發者,肯定不愿意看到這種情況,怎樣才能提高性能呢?

本文將詳細介紹性能問題的出現原因,以及解決方法。

一、網頁生成的過程

要理解網頁性能為什么不好,就要了解網頁是怎么生成的。

網頁的生成過程,大致可以分成五步。

  1. HTML 代碼轉化成 DOM
  2. CSS 代碼轉化成 CSSOM(CSS Object Model)
  3. 結合 DOM 和 CSSOM,生成一棵渲染樹(包含每個節點的視覺信息)
  4. 生成布局(layout),即將所有渲染樹的所有節點進行平面合成
  5. 將布局繪制(paint)在屏幕上

這五步里面,第一步到第三步都非???,耗時的是第四步和第五步。

"生成布局"(flow)和"繪制"(paint)這兩步,合稱為"渲染"(render)。

二、重排和重繪

網頁生成的時候,至少會渲染一次。用戶訪問的過程中,還會不斷重新渲染。

以下三種情況,會導致網頁重新渲染。

  1. 修改 DOM
  2. 修改樣式表
  3. 用戶事件(比如鼠標懸停、頁面滾動、輸入框鍵入文字、改變窗口大小等等)

重新渲染,就需要重新生成布局和重新繪制。前者叫做"重排"(reflow),后者叫做"重繪"(repaint)。

需要注意的是,"重繪"不一定需要"重排",比如改變某個網頁元素的顏色,就只會觸發"重繪",不會觸發"重排",因為布局沒有改變。但是,"重排"必然導致"重繪",比如改變一個網頁元素的位置,就會同時觸發"重排"和"重繪",因為布局改變了。

三、對于性能的影響

重排和重繪會不斷觸發,這是不可避免的。但是,它們非常耗費資源,是導致網頁性能低下的根本原因。

提高網頁性能,就是要降低"重排"和"重繪"的頻率和成本,盡量少觸發重新渲染。

前面提到,DOM 變動和樣式變動,都會觸發重新渲染。但是,瀏覽器已經很智能了,會盡量把所有的變動集中在一起,排成一個隊列,然后一次性執行,盡量避免多次重新渲染。

  1. div.style.color = 'blue'
  2. div.style.marginTop = '30px'

上面代碼中,div 元素有兩個樣式變動,但是瀏覽器只會觸發一次重排和重繪。

如果寫得不好,就會觸發兩次重排和重繪。


  1. div.style.color = 'blue'
  2. var margin = parseInt (div.style.marginTop); 
  3. div.style.marginTop = (margin + 10) + 'px'

上面代碼對 div 元素設置背景色以后,第二行要求瀏覽器給出該元素的位置,所以瀏覽器不得不立即重排。

一般來說,樣式的寫操作之后,如果有下面這些屬性的讀操作,都會引發瀏覽器立即重新渲染。

  1. offsetTop/offsetLeft/offsetWidth/offsetHeight
  2. scrollTop/scrollLeft/scrollWidth/scrollHeight
  3. clientTop/clientLeft/clientWidth/clientHeight
  4. getComputedStyle ()

所以,從性能角度考慮,盡量不要把讀操作和寫操作,放在一個語句里面。


  1. // bad 
  2. div.style.left = div.offsetLeft + 10 + "px"
  3. div.style.top = div.offsetTop + 10 + "px"
  4.  
  5. // good 
  6. var left = div.offsetLeft; 
  7. var top  = div.offsetTop; 
  8. div.style.left = left + 10 + "px"
  9. div.style.top = top + 10 + "px"

一般的規則是:

  1. 樣式表越簡單,重排和重繪就越快。
  2. 重排和重繪的 DOM 元素層級越高,成本就越高。
  3. table 元素的重排和重繪成本,要高于 div 元素

四、提高性能的九個技巧

有一些技巧,可以降低瀏覽器重新渲染的頻率和成本。

第一條是上一節說到的,DOM 的多個讀操作(或多個寫操作),應該放在一起。不要兩個讀操作之間,加入一個寫操作。

第二條,如果某個樣式是通過重排得到的,那么最好緩存結果。避免下一次用到的時候,瀏覽器又要重排。

第三條,不要一條條地改變樣式,而要通過改變 class,或者 csstext 屬性,一次性地改變樣式。


  1. // bad 
  2. var left = 10
  3. var top = 10
  4. el.style.left = left + "px"
  5. el.style.top  = top  + "px"
  6.  
  7. // good  
  8. el.className += " theclassname"
  9.  
  10. // good 
  11. el.style.cssText += "; left: " + left + "px; top: " + top + "px;"

第四條,盡量使用離線 DOM,而不是真實的網面 DOM,來改變元素樣式。比如,操作 Document Fragment 對象,完成后再把這個對象加入 DOM。再比如,使用 cloneNode () 方法,在克隆的節點上進行操作,然后再用克隆的節點替換原始節點。

第五條,先將元素設為 display: none (需要 1 次重排和重繪),然后對這個節點進行 100 次操作,最后再恢復顯示(需要 1 次重排和重繪)。這樣一來,你就用兩次重新渲染,取代了可能高達 100 次的重新渲染。

第六條,position 屬性為 absolute 或 fixed 的元素,重排的開銷會比較小,因為不用考慮它對其他元素的影響。

第七條,只在必要的時候,才將元素的 display 屬性為可見,因為不可見的元素不影響重排和重繪。另外,visibility : hidden 的元素只對重排有影響,不影響重繪。

第八條,使用虛擬 DOM 的腳本庫,比如 React 等。

第九條,使用 window.requestAnimationFrame ()、window.requestIdleCallback () 這兩個方法調節重新渲染(詳見后文)。

五、刷新率

很多時候,密集的重新渲染是無法避免的,比如 scroll 事件的回調函數和網頁動畫。

網頁動畫的每一幀(frame)都是一次重新渲染。每秒低于 24 幀的動畫,人眼就能感受到停頓。一般的網頁動畫,需要達到每秒 30 幀到 60 幀的頻率,才能比較流暢。如果能達到每秒 70 幀甚至 80 幀,就會極其流暢。

大多數顯示器的刷新頻率是 60Hz,為了與系統一致,以及節省電力,瀏覽器會自動按照這個頻率,刷新動畫(如果可以做到的話)。

所以,如果網頁動畫能夠做到每秒 60 幀,就會跟顯示器同步刷新,達到最佳的視覺效果。這意味著,一秒之內進行 60 次重新渲染,每次重新渲染的時間不能超過 16.66 毫秒。

一秒之間能夠完成多少次重新渲染,這個指標就被稱為"刷新率",英文為 FPS(frame per second)。60 次重新渲染,就是 60FPS。

#p#

六、開發者工具的 Timeline 面板

Chrome 瀏覽器開發者工具的 Timeline 面板,是查看"刷新率"的最佳工具。這一節介紹如何使用這個工具。

首先,按下 F12 打開"開發者工具",切換到 Timeline 面板。

左上角有一個灰色的圓點,這是錄制按鈕,按下它會變成紅色。然后,在網頁上進行一些操作,再按一次按鈕完成錄制。

Timeline 面板提供兩種查看方式:橫條的是"事件模式"(Event Mode),顯示重新渲染的各種事件所耗費的時間;豎條的是"幀模式"(Frame Mode),顯示每一幀的時間耗費在哪里。

先看"事件模式",你可以從中判斷,性能問題發生在哪個環節,是 JavaScript 的執行,還是渲染?

不同的顏色表示不同的事件。

  • 藍色:網絡通信和 HTML 解析
  • 黃色:JavaScript 執行
  • 紫色:樣式計算和布局,即重排
  • 綠色:重繪

哪種色塊比較多,就說明性能耗費在那里。色塊越長,問題越大。

幀模式(Frames mode)用來查看單個幀的耗時情況。每幀的色柱高度越低越好,表示耗時少。

你可以看到,幀模式有兩條水平的參考線。

下面的一條是 60FPS,低于這條線,可以達到每秒 60 幀;上面的一條是 30FPS,低于這條線,可以達到每秒 30 次渲染。如果色柱都超過 30FPS,這個網頁就有性能問題了。

此外,還可以查看某個區間的耗時情況。

或者點擊每一幀,查看該幀的時間構成。

七、window.requestAnimationFrame ()

有一些 JavaScript 方法可以調節重新渲染,大幅提高網頁性能。

其中最重要的,就是 window.requestAnimationFrame () 方法。它可以將某些代碼放到下一次重新渲染時執行。


  1. function doubleHeight (element) { 
  2.   var currentHeight = element.clientHeight; 
  3.   element.style.height = (currentHeight * 2) + 'px'
  4. elements.forEach (doubleHeight); 

上面的代碼使用循環操作,將每個元素的高度都增加一倍??墒牵看窝h都是,讀操作后面跟著一個寫操作。這會在短時間內觸發大量的重新渲染,顯然對于網頁性能很不利。

我們可以使用window.requestAnimationFrame (),讓讀操作和寫操作分離,把所有的寫操作放到下一次重新渲染。


  1. function doubleHeight (element) { 
  2.   var currentHeight = element.clientHeight; 
  3.   window.requestAnimationFrame (function () { 
  4.     element.style.height = (currentHeight * 2) + 'px'
  5.   }); 
  6. elements.forEach (doubleHeight); 

頁面滾動事件(scroll)的監聽函數,就很適合用 window.requestAnimationFrame () ,推遲到下一次重新渲染。


  1. $(window) .on ('scroll', function() { 
  2.    window.requestAnimationFrame (scrollHandler); 
  3. }); 

當然,最適用的場合還是網頁動畫。下面是一個旋轉動畫的例子,元素每一幀旋轉 1 度。


  1. var rAF = window.requestAnimationFrame; 
  2.  
  3. var degrees = 0
  4. function update () { 
  5.   div.style.transform = "rotate (" + degrees + "deg)"
  6.   console.log ('updated to degrees ' + degrees); 
  7.   degrees = degrees + 1
  8.   rAF (update); 
  9. rAF (update); 

八、window.requestIdleCallback ()

還有一個函數 window.requestIdleCallback (),也可以用來調節重新渲染。

它指定只有當一幀的末尾有空閑時間,才會執行回調函數。


  1. requestIdleCallback (fn); 

上面代碼中,只有當前幀的運行時間小于 16.66ms 時,函數 fn 才會執行。否則,就推遲到下一幀,如果下一幀也沒有空閑時間,就推遲到下下一幀,以此類推。

它還可以接受第二個參數,表示指定的毫秒數。如果在指定的這段時間之內,每一幀都沒有空閑時間,那么函數 fn 將會強制執行。


  1. requestIdleCallback (fn, 5000); 

上面的代碼表示,函數 fn 最遲會在 5000 毫秒之后執行。

函數 fn 可以接受一個 deadline 對象作為參數。


  1. requestIdleCallback (function someHeavyComputation (deadline) { 
  2.   while(deadline.timeRemaining () > 0) { 
  3.     doWorkIfNeeded (); 
  4.   } 
  5.  
  6.   if(thereIsMoreWorkToDo) { 
  7.     requestIdleCallback (someHeavyComputation); 
  8.   } 
  9. }); 

上面代碼中,回調函數 someHeavyComputation 的參數是一個 deadline 對象。

deadline 對象有一個方法和一個屬性:timeRemaining () 和 didTimeout。

(1)timeRemaining () 方法

timeRemaining () 方法返回當前幀還剩余的毫秒。這個方法只能讀,不能寫,而且會動態更新。因此可以不斷檢查這個屬性,如果還有剩余時間的話,就不斷執行某些任務。一旦這個屬性等于0,就把任務分配到下一輪requestIdleCallback。

前面的示例代碼之中,只要當前幀還有空閑時間,就不斷調用 doWorkIfNeeded 方法。一旦沒有空閑時間,但是任務還沒有全執行,就分配到下一輪requestIdleCallback。

(2)didTimeout 屬性

deadline 對象的 didTimeout 屬性會返回一個布爾值,表示指定的時間是否過期。這意味著,如果回調函數由于指定時間過期而觸發,那么你會得到兩個結果。

  • timeRemaining 方法返回0
  • didTimeout 屬性等于 true

因此,如果回調函數執行了,無非是兩種原因:當前幀有空閑時間,或者指定時間到了。


  1. function myNonEssentialWork (deadline) { 
  2.   while ((deadline.timeRemaining () > 0 || deadline.didTimeout) && tasks.length > 0
  3.     doWorkIfNeeded (); 
  4.  
  5.   if (tasks.length > 0
  6.     requestIdleCallback (myNonEssentialWork); 
  7.  
  8. requestIdleCallback (myNonEssentialWork, 5000); 

上面代碼確保了,doWorkIfNeeded 函數一定會在將來某個比較空閑的時間(或者在指定時間過期后)得到反復執行。

requestIdleCallback 是一個很新的函數,剛剛引入標準,目前只有 Chrome 支持。

九、參考鏈接

  1. Domenico De Felice, How browsers work
  2. Stoyan Stefanov, Rendering: repaint, reflow/relayout, restyle
  3. Addy Osmani, Improving Web App Performance With the Chrome DevTools Timeline and Profiles
  4. Tom Wiltzius, Jank Busting for Better Rendering Performance
  5. Paul Lewis, Using requestIdleCallback
責任編輯:倪明 來源: 阮一峰的網絡日志
相關推薦

2015-11-13 11:33:39

阮一峰ecmascript

2012-11-15 09:43:08

開發算法高斯模糊

2011-12-05 10:44:38

inodeLinux文件系統

2015-09-06 10:34:54

蒙特卡洛阮一峰

2015-09-24 09:43:08

阮一峰持續集成

2015-10-08 08:44:23

阮一峰Github清點對象

2015-11-02 19:11:27

阮一峰javascript循環加載

2015-09-18 15:21:33

求職就業創業阮一峰

2015-09-18 10:57:45

Web網頁性

2015-09-29 08:51:59

內存地址主引導

2014-06-26 10:29:50

云智慧

2015-04-10 19:44:58

APM

2021-12-16 06:52:33

Flex屬性布局

2010-03-02 09:53:14

MySQL性能優化

2024-03-07 11:03:21

ElasticseaES索引

2018-08-09 11:06:39

Apache Spar內存模型

2017-09-19 14:28:06

Web開發網站

2021-08-02 14:17:19

AndroidOOM崩潰性能優化

2024-02-29 08:23:50

Lighthouse分析工具開發者

2011-06-20 14:27:57

Qt Embedded
點贊
收藏

51CTO技術棧公眾號

欧美成人性福生活免费看| 成人黄色在线看| 久久中文字幕在线视频| 777一区二区| 在线观看中文| 91免费在线看| 91精品在线影院| 亚洲欧美在线视频| 精品无人区一区二区三区| 中文字幕 自拍偷拍| 欧美日韩国内| 色综合影院在线| 少妇户外露出[11p]| 欧洲亚洲精品久久久久| 午夜a成v人精品| 国产盗摄视频在线观看| 麻豆app在线观看| 国产成都精品91一区二区三| 国产精品观看在线亚洲人成网| 免费一级全黄少妇性色生活片| 超碰成人久久| 亚洲国产私拍精品国模在线观看| 亚洲涩涩在线观看| 性感美女一区二区在线观看| 亚洲第一成年网| www.-级毛片线天内射视视| 国产在线网站| 99久久99精品久久久久久| 亚洲a∨日韩av高清在线观看| 无码人妻精品一区二区三区9厂| 国产精品hd| 久久精品成人欧美大片| www在线观看免费视频| 一区二区三区四区精品视频| 91精品国产色综合久久不卡蜜臀| 无码人妻丰满熟妇区五十路百度| 日韩影院在线| 亚洲二区在线观看| 国产亚洲精品久久久久久久| 免费大片黄在线观看视频网站| 国产视频一区二区三区在线观看| 久久久久久九九九九| 色哟哟国产精品色哟哟| 丁香激情综合国产| 2022国产精品| 亚洲a视频在线观看| 国产美女视频一区| 91在线视频导航| 国产免费一区二区三区免费视频| 另类欧美日韩国产在线| 国产精品免费网站| 久久久久精彩视频| 日韩av中文在线观看| 国产不卡精品视男人的天堂| 91玉足脚交嫩脚丫在线播放| 久久综合狠狠| 国产成人精品视| 精品一区二三区| 免费黄网站欧美| 国产精品一区二区三区在线播放| 国产在线观看第一页| 日韩成人一级大片| 国产精品 欧美在线| 欧美成人精品网站| 久88久久88久久久| 川上优av一区二区线观看| 国产三级小视频| 成人三级在线视频| 国产一区精品视频| 欧洲综合视频| 国产精品国产三级国产| www国产无套内射com| 欧美野外wwwxxx| 欧美日韩亚洲91| 97公开免费视频| 婷婷久久综合九色综合99蜜桃| 91麻豆精品国产91久久久资源速度 | 亚洲激情成人在线| 秋霞无码一区二区| 欧美精品日日操| 欧美精品1区2区| 欧美日韩一区二区区别是什么 | 国产高清在线观看免费不卡| 国产精品久久波多野结衣| 日产精品久久久久久久性色| 国产精品入口麻豆九色| 蜜桃视频一区二区在线观看| 涩涩视频在线免费看| 欧美揉bbbbb揉bbbbb| 欧美一级片在线免费观看| 九九热线有精品视频99| 久久久成人av| 国产成人综合欧美精品久久| 久久av中文字幕片| 精品伦精品一区二区三区视频| 触手亚洲一区二区三区| 一个色妞综合视频在线观看| 2022亚洲天堂| 久久国产精品美女| 国产视频亚洲精品| 欧美精品久久久久久久久46p| 999亚洲国产精| 国产日韩欧美成人| 手机看片一区二区三区| 国产精品久久久久精k8| 欧美日韩亚洲一| 国产精品久久久久久久久久辛辛 | 国产精品夜夜爽| 欧美日韩无遮挡| 美女网站视频在线| 在线观看欧美精品| 女同性恋一区二区三区| 中出一区二区| 国产精品爱久久久久久久| 日本美女一级片| 最新高清无码专区| 成人性生生活性生交12| 欧美日韩一区二区三区不卡视频| 久久精品国产亚洲一区二区| 亚洲乱码国产乱码精品| 成人免费观看视频| 色婷婷精品国产一区二区三区| caoporn视频在线观看| 91精品国产免费| 国产又粗又长又硬| 久久国产欧美| 久久日韩精品| 草美女在线观看| 日韩欧美电影一二三| 国产欧美精品一区二区三区| 九九久久久久久| 亚洲精品进入| 久久久久久久国产精品| 精品久久国产视频| 综合欧美亚洲日本| 日韩在线不卡一区| 日韩夫妻性生活xx| 国产精品男人爽免费视频1| 日本一区高清| 日韩欧美高清视频| 国产ts在线播放| 中日韩男男gay无套| 国产精品久久久一区二区三区| 国产精品实拍| 91精品婷婷国产综合久久| 久艹在线观看视频| 精品一区二区国语对白| 正在播放一区| 成人综合日日夜夜| 久久不射电影网| 国产黄色片av| 亚洲在线视频免费观看| 国产成人精品综合久久久久99 | www国产黄色| 日本午夜精品| 日韩美女主播视频| 大地资源中文在线观看免费版| 欧美在线999| 蜜桃av免费在线观看| 精品一区二区三区的国产在线播放| 亚洲乱码一区二区三区三上悠亚| 日本免费成人| 久久99精品久久久久久青青91| www.五月婷| 舔着乳尖日韩一区| 日本xxxxxxxxx18| 蜜桃视频一区二区三区在线观看| 中文字幕一区综合| av男人一区| 日本韩国在线不卡| 午夜激情在线观看| 日韩欧美一区二区不卡| 日韩视频免费观看高清| 久久久久9999亚洲精品| 玖玖爱视频在线| 欧美另类亚洲| 久久www免费人成精品| 免费观看成人性生生活片| 日韩中文av在线| 不卡视频免费在线观看| 欧美日韩国产限制| 91免费在线看片| 成人av在线一区二区| 黄色av免费在线播放| 亚洲国产成人精品女人| 久久艹中文字幕| 精品久久99| 国内外成人免费激情在线视频| 免费一级毛片在线观看| 欧美一区二区三区四区在线观看 | 丝袜诱惑亚洲看片| 一本色道久久99精品综合| av成人资源| 国产精品久久久久久久久久久久| 激情网站在线| 一区二区三区高清国产| 欧美一区二区黄片| 欧美精品99久久久**| 亚洲欧美综合自拍| 亚洲免费观看在线视频| 日本aaa视频| 国产高清一区日本| 日本在线观看免费视频| 亚洲免费黄色| 一本二本三本亚洲码| 免费欧美一区| 波多野结衣精品久久| 成人精品高清在线视频| 91成人天堂久久成人| 乱人伦中文视频在线| 亚洲美女视频网站| 亚洲免费一级片| 欧美精品久久一区| 国产午夜麻豆影院在线观看| 亚洲综合丁香婷婷六月香| 中文字幕精品亚洲| 久久久精品日韩欧美| 久久性爱视频网站| 国产酒店精品激情| www.com操| 视频一区国产视频| www.av中文字幕| 欧美日韩p片| 国产日本欧美在线| 欧美一区二区三| 欧美日韩国产一二| 日本国产精品| 国产手机精品在线| 国产精品久久久久av蜜臀| 国产在线视频2019最新视频| 最近在线中文字幕| 91av网站在线播放| 国产99在线观看| 久久久久久高潮国产精品视| 久草在线视频网站| 久久99热精品这里久久精品| 国产在线高清视频| 麻豆国产va免费精品高清在线| 日本中文字幕在线视频| 色偷偷888欧美精品久久久| 国产主播福利在线| 国产亚洲精品美女久久久| 免费在线一级视频| 亚洲偷欧美偷国内偷| 日韩福利一区二区| 日韩精品中文在线观看| 亚洲色大成网站www| 亚洲精品黄网在线观看| 性插视频在线观看| 亚洲国产免费av| 四虎在线免费观看| 亚洲午夜色婷婷在线| 国产69久久| 日韩最新在线视频| free性欧美hd另类精品| 欧美黄色三级网站| 国产在线精彩视频| 青草成人免费视频| 国产精品亚洲d| 91免费欧美精品| 波多野结衣在线一区二区 | 日本一二三区在线| 国产精品一区专区| xfplay5566色资源网站| www国产成人| 69精品无码成人久久久久久| 国产精品电影一区二区| 九九精品在线观看视频 | 国产成人麻豆免费观看| 欧美视频在线观看一区| av在线资源观看| 亚洲二区在线播放视频| 你懂的免费在线观看视频网站| 中日韩美女免费视频网站在线观看 | 亚洲高潮无码久久| 在线欧美福利| 簧片在线免费看| 丁香婷婷综合激情五月色| 黄瓜视频污在线观看| 国产精品高清亚洲| 国产一级特黄视频| 欧美亚洲精品一区| 亚洲精品综合久久| 国产亚洲欧洲黄色| 成人免费高清| 人人澡人人澡人人看欧美| 日韩欧美三区| 精品一区2区三区| 亚欧美无遮挡hd高清在线视频| 99色这里只有精品| 美女一区二区视频| 国产国语老龄妇女a片| 欧美国产日韩a欧美在线观看 | 免费黄色在线网站| 26uuu亚洲伊人春色| av日韩一区| 牛人盗摄一区二区三区视频| 在线精品国产| 国产xxxxx视频| 成人av午夜电影| 欧美肥妇bbwbbw| 日本韩国视频一区二区| 免费a级片在线观看| 北条麻妃一区二区三区中文字幕| 涩涩视频在线免费看| 亚洲在线免费视频| 精品一区不卡| 99爱视频在线| 懂色一区二区三区免费观看| 99热6这里只有精品| 日韩欧美国产中文字幕| 黄色小视频免费在线观看| 自拍亚洲一区欧美另类| 国产免费不卡| 国产一区二区三区奇米久涩| 久久久久久久久国产一区| 九热视频在线观看| 91啦中文在线观看| 国产在线精品观看| 日韩你懂的在线播放| 国产三区在线观看| 国产精品视频自在线| 久久综合色占| 国产xxxxx在线观看| 成人精品免费视频| 国产一二三四区| 欧美日韩三级一区二区| 国模精品一区二区| 欧美在线www| 欧美1区2区3区4区| 久久久亚洲国产精品| 国产福利一区二区三区视频| 天天色影综合网| 欧美精品在欧美一区二区少妇 | 欧美大学生性色视频| 精品国产一区二| 伊人久久av导航| 六月婷婷色综合| 免费一级黄色录像| 欧日韩精品视频| 成人性爱视频在线观看| 国产国语videosex另类| 精品国产一区二区三区小蝌蚪| 黑人糟蹋人妻hd中文字幕| av不卡一区二区三区| 国产精品白浆一区二小说| 精品久久久久久无| av手机在线观看| 精品蜜桃一区二区三区| 野花国产精品入口| 88久久精品无码一区二区毛片| 欧美日韩加勒比精品一区| 亚洲欧洲视频在线观看| 日本sm极度另类视频| 国产一区二区三区不卡视频网站| 人人爽人人av| 最近中文字幕一区二区三区| xxxx18国产| 欧美亚洲一区在线| 国产一区2区| 久久婷婷中文字幕| 亚洲一区中文日韩| 亚洲色偷精品一区二区三区| 国产精品91在线观看| 欧美3p在线观看| 亚洲 自拍 另类 欧美 丝袜| 亚洲国产成人va在线观看天堂| 青青操在线视频| 91精品久久久久久久久久久久久| 中文字幕乱码亚洲无线精品一区| 中文字幕人妻一区| 色综合视频在线观看| 日本a级在线| 懂色av一区二区三区在线播放| 亚洲最黄网站| chinese全程对白| 精品欧美一区二区在线观看| 成人av观看| 中文字幕中文字幕在线中心一区| 国产 日韩 欧美大片| 波多野结衣啪啪| 欧美成人午夜剧场免费观看| 色老板在线视频一区二区| 亚洲欧美视频二区| 亚洲国产美国国产综合一区二区| 国产视频网址在线| 97免费资源站| 日韩不卡在线观看日韩不卡视频| a级黄色片免费看| 91免费公开视频| 一区二区在线观看免费视频播放| 免费成人在线看| 国产精品男人的天堂| 精品成人在线| 婷婷综合在线视频| 欧美精品一区在线观看| ww久久综合久中文字幕| 一本久道高清无码视频| 欧美高清在线精品一区| 黄色a在线观看|