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

前端不止:Web性能優化 - 關鍵渲染路徑以及優化策略

開發 開發工具
想一想,如果你希望你的網站在一秒鐘之內呈現用戶想看的關鍵信息,有哪些可行的手段?Minify,壓縮,雪碧圖等等。Google的Web性能工程師 Ilya Grigorik 會告訴你,你只需要理解瀏覽器的關鍵渲染路徑。

我問你:“當你從搜索引擎的結果頁面選擇打開一條搜索結果時,你覺得多長時間之后,如果頁面還處于白屏或者沒有加載到關鍵信息,你會選擇關掉這個窗口?”

《Designing for Performance》的作者 Lara Swanson 在2014年寫過一篇文章《Web性能即用戶體驗》,她在文中提到“網站頁面的快速加載,能夠建立用戶對網站的信任,增加回訪率,大部分的用戶其實都期待頁面能夠在2秒內加載完成,而當超過3秒以后,就會有接近40%的用戶離開你的網站”。

Google和亞馬遜的研究表明,Google頁面加載的時間從0.4秒提升到0.9秒導致丟失了20%流量和廣告收入,對于亞馬遜,頁面加載時間每增加100毫秒就意味著1%的銷售額損失。可見,頁面的加載速度對于用戶可能的下一步操作是多么的舉足輕重。

想一想,如果你希望你的網站在一秒鐘之內呈現用戶想看的關鍵信息,有哪些可行的手段?Minify,壓縮,雪碧圖等等。

Google的Web性能工程師 Ilya Grigorik 會告訴你,你只需要理解瀏覽器的關鍵渲染路徑。

[[234167]]

頁面性能可能是一個感性的東西

頁面的性能,看似是一個理性和量化的概念,實則也來自于用戶的感知,主觀的評價,是一個偏感性的東西。

(參考自Google關鍵渲染路徑)

如果頁面可以做到優先顯示與用戶操作有關的內容,就可以讓用戶更快速的感知到操作得到響應,這個過程叫做“優化關鍵渲染路徑”。

什么是關鍵渲染路徑

我記得,有一個非常經典的面試題叫做:《當瀏覽器地址欄輸入URL并回車后,發生了什么?》。

關鍵渲染路徑就是描述瀏覽器從收到 HTML、CSS 和 JavaScript 字節開始,到如何使用HTML、CSS 和 JavaScript 在屏幕上渲染像素的中間過程。

如果我們能夠優化這條路徑,就能讓頁面更快速的展示內容,給用戶更好的體驗。

全景圖

我們先嘗試站在高處,看一眼關鍵渲染路徑的全景圖,這樣能夠快速的領略一個大致輪廓和一些關鍵概念。

文檔對象模型 (DOM)

DOM概念之于Web開發人員再熟悉不過了,當瀏覽器發出請求并接收到HTML文檔后,它會有這樣一個流程來構建DOM:字節 → 字符 → 令牌 → 節點 → 對象模型。

以下面這段代碼為例:

  1. <html> 
  2.   <head> 
  3.     <meta name="viewport" content="width=device-width,initial-scale=1"> 
  4.     <link href="style.css" rel="stylesheet"> 
  5.     <title>Critical Path</title> 
  6.   </head> 
  7.   <body> 
  8.     <p>Hello <span>web performance</span> students!</p> 
  9.     <div><img src="awesome-photo.jpg"></div> 
  10.   </body> 
  11. </html> 

瀏覽器接收到HTML請求的返回結果,根據預定的流程解析HTML,文檔中的“開標簽”,比如,等會轉換成一個令牌(Token),然后令牌轉換成節點對象(Node)。

這個令牌解析并轉換為節點對象的過程,也是每個節點建立關系(樹形結構)的過程。例如:head的令牌出現在html令牌之后,但其閉標簽出現在html閉標簽之前,這就意味著head是html的子節點,以此類推,建立節點的父子關系。

這個過程在瀏覽器中,叫做“Parse HTML”。

CSS 對象模型 (CSSOM)

當DOM捕獲了頁面的內容,我們還需要知道頁面如何展示這些內容,所以需要構建CSS 對象模型(CSSOM)。

瀏覽器解析DOM,遇到了link標簽,發現它引用了一個外部樣式資源:style.css,于是瀏覽器會向外部請求樣式資源,然后進行后續的DOM構建工作。

CSS 被視為阻塞渲染的資源,這意味著瀏覽器將不會渲染任何已處理的內容,直至 CSSOM 構建完畢。

CSSOM有著一個和DOM構建相似的流程:字節 → 字符 → 令牌 → 節點 → CSS對象模型。

以下面的CSS樣式為例,它會根據具體解析規則,將CSS文檔轉換成下面的樹形結構:

  1. body { font-size: 16px } 
  2. p { font-weight: bold } 
  3. span { color: red } 
  4. p span { display: none } 
  5. img { float: right } 

這種樹形結構讓CSS有層級繼承關系,子節點會繼承父節點的樣式。

前面談到CSS會阻塞瀏覽器的渲染過程,因為渲染樹的構建同時需要DOM和CSSOM,所以當瀏覽器請求的style.css返回之后,瀏覽器會開始解析樣式表,并重新計算樣式(Recalculate Style),將CSS轉換成CSSOM,然后進行后續的操作。

值得注意的是,CSSOM運算是一個非常復雜的過程,性能消耗會比較大,所以你會常常聽到“老人們”說寫樣式“盡量使用class和id,保證層級扁平,減少過度層疊”,而且越是通用的CSS樣式,執行速度越快,越是具體(選擇器)的CSS樣式,則執行速度越慢。

DOM + CSSOM = 渲染樹

渲染樹和DOM樹不同,它只會捕獲一些頁面上可見的元素,比如,Header或display:none的元素不會放在渲染樹中。

渲染樹的構建會從DOM的根節點開始遍歷,對于不可見節點會忽略,然后在CSSOM中找到每個對應節點的樣式規則并應用,最后輸出的渲染樹會包含所有的可見內容和樣式信息,如下圖:

布局和繪制

有了渲染樹,瀏覽器會進入布局和繪制階段。

布局就是弄清每個對象在頁面視窗(Viewport)上的確切大小和位置,它的輸出是一個“盒模型”,里面準確的捕獲每一個元素在頁面視窗中的位置和尺寸。

在布局工作完成之后,瀏覽器會開始繪制,將渲染樹轉換成屏幕上的像素,這樣,我們就能在瀏覽器中看到頁面的內容。

短暫回顧一下“關鍵渲染路徑”的步驟

  • 處理 HTML 標記并構建 DOM 樹
  • 處理 CSS 標記并構建 CSSOM 樹
  • 將 DOM 與 CSSOM 合并成一個渲染樹
  • 根據渲染樹來布局
  • 將各個節點繪制到屏幕上

當DOM或者CSSOM發生變化的時候,瀏覽器就需要再次執行一次上面的步驟。

JavaScript

到目前為止,我們還沒涉及到JavaScript,但它在整個關鍵渲染路徑中扮演著非常重要的角色,就如全景圖中畫的那樣,我們從一段簡單的代碼開始:

  1. <body> 
  2.   <p>Hello <span>web performance</span> students!</p> 
  3.   <script> 
  4.     var span = document.getElementsByTagName('span')[0]; 
  5.     span.textContent = 'javascript'
  6.   </script> 
  7. </body> 

一個大家都知道的重要事實是:腳本在文檔的何處插入,就在何處執行。

當HTML解析過程中遇到一個script標記時,它會暫停DOM構建,將控制權移交給JavaScript引擎,等JavaScript引擎運行完畢,瀏覽器再從中斷的地方恢復DOM構建。也就是說,執行內聯的JavaScript會阻塞頁面的首次渲染。

現在我們假設,這段JavaScript是外部資源。

  1. <body> 
  2.   <p>Hello <span>web performance</span> students!</p> 
  3.   <script src="write.js"></script> 
  4. </body> 

則瀏覽器的渲染會阻塞直到write.js的請求返回后,并執行JavaScript后,繼續。

需要注意的是,在網頁中引入JavaScript腳本有一個微妙事實,就是JavaScript不僅可以讀取和修改DOM屬性,還可以讀取和修改CSSOM屬性。

前面我們提到CSS是阻塞渲染的資源,當它和JavaScript一起出現在頁面上時,會發生這樣的事情:

  1. <html> 
  2.   <head> 
  3.     <meta name="viewport" content="width=device-width,initial-scale=1"> 
  4.     <link href="style.css" rel="stylesheet"> 
  5.     <title>Critical Path: Script</title> 
  6.   </head> 
  7.   <body> 
  8.     <p>Hello <script>document.write('web performance')</script> students!</p> 
  9.   </body> 
  10. </html> 

在瀏覽器解析HTML構建DOM過程中,發現了link標簽,于是發出請求獲取style.css,然后繼續構建DOM,此時,它發現script標簽,由于JavaScript可能會訪問樣式屬性,所以它會阻止JavaScript的執行直到styles.css返回并完成CSSOM構建,然后執行這一段JavaScript代碼,再繼續后面DOM的構建和相關渲染操作。

于是styles.css的請求不僅阻塞后面的渲染,還阻塞了DOM的構建。

如果將這段JavaScript作為外部資源,就是一個比較典型的頁面結構:

  1. <html> 
  2.   <head> 
  3.     <meta name="viewport" content="width=device-width,initial-scale=1"> 
  4.     <link href="style.css" rel="stylesheet"> 
  5.     <title>Critical Path Render</title> 
  6.   </head> 
  7.   <body> 
  8.     <p>Hello <span>web performance</span></p> 
  9.     <script src="app.js"></script> 
  10.   </body> 
  11. </html> 

JavaScript和CSS資源請求是并行的,但仍然需要等到CSSOM構建完成之后,JavaScript才可以執行,然后在進行后面的渲染工作。于是,當 DOM、CSSOM 和 JavaScript 執行之間有大量的依賴關系時,就很可能導致瀏覽器在處理及渲染網頁時出現延遲。

優化策略

我們花了大量的篇幅來理解瀏覽器的渲染過程,理解DOM,CSSOM,渲染樹,瀏覽器繪制,分析HTML,CSS和JS在渲染過程中的關系,我相信你已然受益匪淺,現在,我們來運用這些知識加速你的網站。

第一步,分析你的網站渲染狀況

我們以Google為例,通過Chrome的Performance工具查看頁面渲染情況,如下圖,你應該可以清晰的看到圖中有四條豎線,他們分別是什么含義呢?

(Google主頁的性能分析情況)

  • 綠色豎線,代表First Paint,即瀏覽器開始進行像素的繪制
  • 黃色豎線,代表First Meaningful Paint(首次有效繪制)用戶可以開始看到部分內容,但繪制仍在繼續
  • 藍色豎線,代表大家比較熟悉的DOMContentLoaded
  • 紅色豎線,代表load,頁面加載完成

優秀的網站都能夠把“首次有效渲染”做到1秒之內完成,這樣能夠讓用戶更快的看到所請求的頁面得到響應。如果你的網站“首次有效渲染”超過1秒,那么就非常有必要重新分析一下網站的關鍵渲染路徑是否合理。

第二步,分析關鍵渲染路徑

在關鍵渲染路徑中,我們通常要關注三個點:

  • 頁面首次渲染需要的關鍵資源數量
  • 關鍵資源的大小
  • 關鍵渲染路徑的往返次數(Roundtrip)

我們的策略也非常簡單,就是減少關鍵資源數量,降低資源大小,減少關鍵路徑的往返次數。

關鍵渲染的資源一般是阻止屏幕首次渲染HTML,CSS和JavaScript,所以最重要也是最難的部分的是你需要根據自己網站的實際情況分析,哪些是頁面繪制的所必須的,哪些是無關的。

第三步,根據分析采取優化手段

(1) 減少關鍵資源的大小

我們首先從最簡單也是最直接的減少關鍵資源的大小開始:

對于所有的資源(HTML,JavaScript,CSS,Image等),你都應該用上三大絕招:Minify,Compression和Cache,這里不過多的贅述里面的細節。

這一點對于HTML來說,非常關鍵,HTML作為渲染的關鍵資源,消除或者延遲加載肯定不太可能(這里指的是非局部渲染的關鍵HTML),能夠做到是消除無用代碼(比如:注釋)和最小化代碼(Minify)以及動態局部渲染等。

Google對頁面的HTML進行了壓縮

(Google對頁面的HTML進行了壓縮)

(2) 延遲JavaScript非阻塞資源加載

JavaScript和CSS都是阻塞渲染的資源,對于已經鑒別出的對于首次渲染沒有起到關鍵作用的代碼,我們首先想到的是要延遲它的加載,讓它脫離關鍵渲染路徑。

首先,對于阻塞渲染的JavaScript,應該將它放置在頁面body的底部,為什么呢?

JavaScript可以查詢和操作DOM和CSSOM,正如前面介紹的,HTML解析過程中構建DOM,當遇到JavaScript就停止DOM構建執行JavaScript,如果被執行的JavaScript是放置在head附近,那么很可能要被操作或者查詢的DOM還沒有構建到DOM當中。

而對于,非阻塞渲染的JavaScript,我們應該采用異步的方式加載,如下:

  1.  <script src="script.js"></script> 
  2.   <script async src="script.js"></script> 
  3.   <script defer src="myscript.js"></script> 
  4. </body> 
  5. </html> 
  • 方式一:即阻塞的JavaScript,HTML解析過程中遇到script標簽,發出網絡請求獲取script.js,在網絡請求返回后,解析并執行script.js,然后瀏覽器繼續HTML解析。
  • 方式二:async,完全的異步操作,HTML解析遇到該標簽后,發出網絡請求,但不阻止HTML解析和其后面的渲染操作,當JavaScript請求返回后立刻執行,且不等待HTML解析或其他操作的完成。所以,如果腳本中有DOM操作,就并不適合。比較適合的場景是Google Analytics。
  • 方式三:defer,HTML的解析和對JavaScript資源的網絡請求是并行的,但它會等待HTML解析完成之后,才執行腳本。

不過,async和defer,他們對瀏覽器的兼容性有一定的要求,但仍然應該使用它們,同時可以采用退而求其次的延遲代碼執行的方法(比如:on DOMContentLoad后),特別是與首次渲染無關的計算邏輯和功能。

(3) 盡早和按需的加載CSS

你可能在思考,有沒有異步加載CSS的需求?我認為不應該有,頁面應該只引用與該頁面相關的樣式文件。(只不過很多時候,我們將所有的CSS都打包在了一個壓縮的CSS文件中了。)目前,已經有許多幫助你分析關鍵渲染路徑上的所需要的CSS的工具:grunt-criticalcss,critical,criticalCSS,在線CRPCSS工具。

前面已經提到,CSS是阻塞渲染的資源,在CSSOM完全解析完成之前,瀏覽器不可能開始屏幕的繪畫。

所以,我們應該盡早的開始對樣式資源的請求,將它盡早、盡快地下載到客戶端,這樣解釋了為什么我們看到樣式資源的link標簽一般都放在head表中:

  1. <!DOCTYPE html> 
  2. <html lang="en"> 
  3. <head> 
  4.   <title>Sample Site</title> 
  5.   <link href="style.css" rel="stylesheet"> 
  6. </head> 

CSSOM的運算是一個非常復雜和相對耗時的過程,但它也有一個特點,就是可能只有在特定的情況下才會起作用,比如:響應式設計的頁面。

對于響應式頁面,我們可以考慮將不同媒體上的樣式分離,在中使用媒體查詢,瀏覽器仍然會下載對應的資源,但是可以避免不必要的CSSOM解析導致對渲染的阻塞。

  1. <link href="style.css" rel="stylesheet" media="all"> 
  2. <link href="portrait.css" rel="stylesheet" media="orientation:portrait"> 
  3. <link href="print.css" rel="stylesheet" media="print"> 

同時,我們還應該避免在首次渲染的CSS樣式中使用@import指令,因為它只有在收到并解析完帶有@import規則的CSS資源之后,才會發現導入的 CSS 資源,這個時候就會重新請求,從而增加了關鍵渲染路徑的往返次數。

(4) 內聯CSS來提高渲染性能

到目前為止,我們已經做到了識別關鍵渲染資源,將非關鍵資源延遲加載或者不加載。那么,減少關鍵路徑的往返次數是什么意思?其實就是減少關鍵渲染資源從服務器端到客戶端的往返次數。比如,外鏈的JS和CSS文件以前CSS的@import,在頁面渲染的過程中,都會重新去服務器端請求。這其實,和我們常說的減少http請求量(合并http請求)類似,但是我么從渲染路徑的角度來理解這樣一種性能的消耗。

根據這樣的邏輯,我們很容易就想到可以將渲染必備CSS內聯到HTML中,來減少渲染路徑的往返次數。

實際上不少的優秀網站都采用了在head內聯樣式的做法:Google,百度,淘寶,京東。

(百度和Google將樣式inline在head中)

關于內聯樣式還有更進一步的做法,在文章的一開始就提到,優化關鍵渲染路徑就是要優先顯示和用戶先關內容。

所以,我們可以考慮僅僅將當前屏幕展示的內容(above-the-fold,一屏)所需的CSS內聯到HTML的head中,然后采用異步的方式加載整個頁面所需要的完整CSS,以便用戶能夠更快的看到首屏出現的內容。(inlining-critical-css-for-better-web-performance)

(5) 一個神奇的數字14kb

在最開始我們提到,要減小關鍵資源的大小,那么多小比較合適呢?(廢話,當然是越小越好)。

其實,有一個神奇的數字14kb,它是怎么來?

HTTP的傳輸層協議是TCP,TCP協議有一個慢啟動的過程,即它在第一次傳遞數據時,只能同時傳遞14kb的數據塊,所以當數據超多14kb時,TCP協議傳遞數據實際是多次的往返(roundtrip)。如果能夠將渲染所需要的資源控制在14kb之內,那么就能TCP協議啟動時,一次完成數據的傳遞。

其他Web資源和關鍵渲染路徑的關系

你一定會思考,除了HTML,JavaScript和CSS,Web頁面還包含許多其他的資源,比如:圖片,網絡字體(Icon Font),他們和關鍵渲染路徑的關系是什么?

大家對圖片加載感受都應該大致一樣,它會在頁面加載過程中或完成后,逐步顯示,也就是說它不是阻塞渲染的資源,它的痛點主要在于質量和資源大小的權衡,以及請求數量帶來的性能消耗(雪碧圖)。

網絡字體,在網絡加載比較慢的情況下,用戶可能會感受到字體或者圖形的變化(Icon Font)。其實,瀏覽器在渲染樹構建完成之后,會指示需要哪些字體在網頁上渲染指定文本,然后分派字體請求,瀏覽器執行布局并將內容繪制到屏幕上,如果字體尚不可用,瀏覽器可能不會渲染任何文本像素,待字體可用之后,再繪制文本像素,當然,不同瀏覽器之間實際行為有所差異,這里不在贅述,請參考文章尾部的資料鏈接。

總結

優化關鍵渲染路徑的最終目的是優先顯示和用戶操作相關的內容,減少低優先級資源對瀏覽器渲染的阻塞,從而盡早顯示用戶真正關心的關鍵內容。頁面性能就是用戶體驗的一個重要維度,嘗試用感性的思維去思考理性的代碼,也許真的能受益不少。

【本文是51CTO專欄作者“ThoughtWorks”的原創稿件,微信公眾號:思特沃克,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2023-04-10 11:18:38

前端性能優化

2022-03-02 11:13:50

Web前端開發

2013-01-22 15:27:23

WebWeb前端

2012-01-10 16:22:25

Web

2022-01-09 16:45:36

前端性能優化編程

2014-12-10 10:12:02

Web

2023-05-10 10:30:02

性能優化Tomcat

2017-02-05 17:33:59

前端優化Web性能

2009-09-08 09:45:23

App Engine性

2010-05-18 10:09:38

前端優化

2020-10-16 10:40:39

前端性能可視化

2022-05-17 09:02:30

前端性能優化

2022-11-16 12:03:13

性能優化前端

2020-10-16 09:00:12

前端開發技術

2019-11-01 14:00:58

前端性能優化代碼

2021-07-16 23:01:03

SQL索引性能

2016-12-08 10:57:08

渲染引擎前端優化

2015-09-16 13:54:30

Android性能優化渲染

2023-11-18 19:46:07

GPU架構

2022-12-12 09:01:13

點贊
收藏

51CTO技術棧公眾號

成人午夜在线观看| 欧美妇女性影城| 久久久久欧美| 中国黄色一级视频| 香港欧美日韩三级黄色一级电影网站| 日韩一区二区三区视频| 国产视频九色蝌蚪| 国产黄色片在线观看| 韩日欧美一区二区三区| 97精品国产97久久久久久免费 | 欧美在线观看视频免费| 日本ー区在线视频| 国产一区在线不卡| 欧美一级片久久久久久久| 黄色激情小视频| 成人av激情人伦小说| 在线观看一区二区视频| 欧美中日韩在线| 五月天婷婷在线视频| youjizz久久| 国产免费一区视频观看免费| 国产成人一区二区三区影院在线| 久久福利综合| 国产视频在线一区二区| 国产91在线免费观看| 伊人久久高清| 亚洲成在人线免费| 久久久久久久久影视| 亚洲区小说区图片区| 国产在线精品一区在线观看麻豆| 国产成人一区二| 国产成人无码精品久久久久| 欧美+亚洲+精品+三区| 在线视频免费一区二区| 日韩一级视频在线观看| 粉嫩精品导航导航| 欧美一区二区三区爱爱| 国产日韩欧美久久| 欧美aaa视频| 色视频一区二区| 久久精品免费一区二区| 白白色在线观看| 亚洲免费三区一区二区| 在线观看一区二区三区三州 | 久久色视频免费观看| 国产精品18毛片一区二区| 亚洲特级黄色片| 蜜臀av性久久久久蜜臀av麻豆| 日本成人精品在线| 国产又黄又粗又爽| 国产亚洲毛片| 欧美在线视频免费播放| 97久久久久久久| 久久精品一区二区国产| 日本欧美中文字幕| 免费黄色片视频| 日产欧产美韩系列久久99| 国产不卡精品视男人的天堂| 免费黄色网址在线| 午夜在线一区| 国产精品福利小视频| 国产一级片av| 美女久久久精品| 国产在线播放91| 99久久久久久久| 国产99精品在线观看| 亚洲一区二区三区xxx视频| 国产农村妇女毛片精品| 国产成人自拍网| 国产精品成人观看视频免费| 少妇无码一区二区三区| 91亚洲男人天堂| 日本一区视频在线| 麻豆影视国产在线观看| 亚洲精品国产无天堂网2021| 国产精品久久成人免费观看| 牛牛精品在线视频| 欧美日韩在线第一页| 久久久久免费精品| 成人在线啊v| 亚洲国产三级网| 国产一区二区三区精品在线| 欧美在线黄色| 2019中文在线观看| 亚洲精品国产欧美在线观看| 激情综合色丁香一区二区| 成人片在线免费看| 日本中文字幕一区二区有码在线 | 亚洲视频重口味| 国内精品久久久久久久影视麻豆| 亚洲18私人小影院| 中文字幕久久熟女蜜桃| 国产精品1024久久| 欧美极品日韩| 日韩三级电影视频| 色欧美乱欧美15图片| 国产免费中文字幕| 欧美三级电影在线| 日韩亚洲精品视频| 日韩三级免费看| 捆绑紧缚一区二区三区视频| 国产一区二区精品免费| 永久免费在线观看视频| 亚洲午夜私人影院| 国产91色在线观看| 欧美成a人免费观看久久| 日韩在线小视频| 青青草免费观看视频| 国产一区二区不卡在线| 日本一区二区三区免费看| 在线免费观看污| 欧美系列在线观看| 亚洲天堂2024| 亚洲最大黄网| 国产精品吹潮在线观看| 色欲久久久天天天综合网| 中文字幕人成不卡一区| 日本精品一区二区三区四区| avtt综合网| 久久久成人精品视频| 黄瓜视频在线免费观看| 丁香激情综合五月| 一区二区三区国产福利| 一区一区三区| 亚洲第一区中文99精品| 国产盗摄一区二区三区在线| 日本vs亚洲vs韩国一区三区二区| 国产一区二区三区奇米久涩| 中文字幕中文字幕在线中高清免费版 | 99久re热视频精品98| 精品成人免费一区二区在线播放| 亚洲国产日韩欧美在线动漫 | 日本久久一区二区| 精品视频站长推荐| 精品999网站| 99热99热| 毛片在线网址| 日韩视频国产视频| 日本精品在线免费观看| 青草av.久久免费一区| 欧美日韩在线不卡一区| 台湾佬中文娱乐网欧美电影| 亚洲高清久久网| 国产污视频在线看| 成人午夜视频在线观看| 日韩黄色片在线| 欧美视频二区欧美影视| 久久高清视频免费| 99精品在线看| 一区二区在线观看免费视频播放| 日本美女视频一区| 国产精品国产三级国产在线观看 | 亚洲日本在线视频观看| 久久国产这里只有精品| 91欧美在线| 国产在线视频91| 欧洲美女少妇精品| 91成人在线观看喷潮| 日本一级免费视频| 日本中文字幕不卡| 亚洲欧洲久久| 高清国产一区二区三区四区五区| 久久精品久久久久| 国产黄色高清视频| 亚洲国产日韩一级| 国产麻豆天美果冻无码视频| 久久亚洲风情| 一区二区三区四区欧美日韩| 精品国产亚洲一区二区三区在线| 欧美放荡办公室videos4k| 六月婷婷综合网| 色综合久久99| 四虎永久免费地址| 国产99久久久精品| 99精品视频播放| 日韩中字在线| 国产v亚洲v天堂无码| 色是在线视频| 日韩视频免费在线| 日韩一级中文字幕| 91高清视频在线| 日韩女优一区二区| 91亚洲精品乱码久久久久久蜜桃| 国产精品人人爽人人爽| 伊人久久大香线| 韩国一区二区三区美女美女秀| 国产一区二区主播在线| 久久影视电视剧免费网站清宫辞电视| 好吊色一区二区| 91黄色免费版| 国产高清在线免费观看| 91偷拍与自偷拍精品| 日韩精品视频一二三| 影音先锋久久资源网| 日韩黄色影视| 999久久精品| 国产成人在线亚洲欧美| 自由的xxxx在线视频| 国产丝袜一区二区三区免费视频| 亚洲中文一区二区三区| 香蕉成人伊视频在线观看| 天堂资源在线视频| 99在线精品视频| 亚洲一区二区三区四区精品| 香蕉国产精品偷在线观看不卡| 中文字幕日韩精品一区二区| 亚洲动漫精品| 99视频日韩| 国产伊人久久| 青青精品视频播放| 波多野结衣久久| 久久av资源网站| 欧美性受ⅹ╳╳╳黑人a性爽| 在线视频欧美精品| 国产性一乱一性一伧一色| 欧美videosex性欧美黑吊| 久久伊99综合婷婷久久伊| 国产ts一区二区| 麻豆传媒视频在线观看| 精品在线观看国产| www三级免费| 欧美日韩午夜在线| 丁香六月婷婷综合| 亚洲成人在线免费| 国产精品久久久影院| 欧美男男激情freegay| 欧美亚洲一区三区| 五月天婷婷丁香| 亚洲免费观看高清在线观看| 精品国产aaa| 国产亚洲va综合人人澡精品 | 欧美一区国产| 午夜精品三级视频福利| 欧洲精品二区| 欧美成人免费一级人片100| 超碰免费97在线观看| 亚洲欧美福利视频| 日韩精品123| 日韩激情视频在线播放| 欧美视频xxx| 精品第一国产综合精品aⅴ| 精品毛片在线观看| 日韩一级视频免费观看在线| 国产女人18毛片水18精| 777久久久精品| 一卡二卡三卡在线观看| 欧美日韩亚洲高清一区二区| 中日韩在线观看视频| 在线观看91精品国产入口| 无码人妻丰满熟妇精品| 日本道在线观看一区二区| 国产精品熟女视频| 欧洲亚洲精品在线| 中文字幕一级片| 欧美精品在线一区二区三区| 一区二区三区精彩视频| 911国产精品| 精品毛片一区二区三区| 精品盗摄一区二区三区| 黄色av网址在线| 日韩国产欧美精品一区二区三区| 色婷婷综合视频| 日韩精品亚洲视频| 国产女人在线观看| 最新的欧美黄色| av网站在线看| 97视频国产在线| 激情亚洲影院在线观看| 国产日韩在线免费| 视频一区国产| 久久久久久国产精品mv| 视频一区在线观看| 伊人色综合影院| 午夜精品免费| 欧美日韩成人免费视频| 日韩av不卡在线观看| 色姑娘综合天天| 99久久精品免费| 国产91丝袜美女在线播放| 亚洲免费资源在线播放| 日韩av片在线播放| 欧美性受xxxx黑人xyx性爽| 国产乱人乱偷精品视频| 亚洲成人性视频| 高清日韩av电影| 久久99国产精品自在自在app| 日本蜜桃在线观看视频| 国产欧美va欧美va香蕉在线| 伊人久久影院| 日韩av电影免费在线| 女主播福利一区| 欧美视频第三页| 国产成人久久精品77777最新版本| 99久久人妻精品免费二区| 中文字幕av不卡| 国产在线精品观看| 欧美午夜精品久久久| 国产精品久久久久久9999| 我不卡神马影院| 每日在线更新av| 精品一区二区三区香蕉蜜桃| 亚洲黄色免费在线观看| **网站欧美大片在线观看| 久久国产视频播放| 欧美一二三区在线| 成年在线电影| 17婷婷久久www| 日韩精品成人| 婷婷精品国产一区二区三区日韩| 国产中文一区| 日韩在线不卡一区| 久久精品日韩一区二区三区| 青青草国产在线观看| 色婷婷久久久久swag精品| 亚洲xxx在线| 久久午夜a级毛片| 巨胸喷奶水www久久久免费动漫| 国产一区二区不卡视频| 欧美激情第8页| 性鲍视频在线观看| 中文字幕欧美激情一区| 伊人手机在线视频| 亚洲成人教育av| 调教一区二区| 91视频8mav| 婷婷伊人综合| 日本人视频jizz页码69| 国产三级一区二区| 国产69精品久久久久久久久久| 日韩欧美国产三级电影视频| 男人的天堂在线视频免费观看 | 亲子乱一区二区三区电影| 国产精品极品| 国产91视频一区| 国产一区在线精品| 性色av无码久久一区二区三区| 欧美区视频在线观看| 91福利在线视频| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 你懂的在线观看一区二区| 免费极品av一视觉盛宴| 国产一区二区在线影院| 久久国产高清视频| 在线电影国产精品| 中文字幕在线观看日本| 国产精品美女网站| 成人午夜av| 尤物国产在线观看| 日本熟妇成熟毛茸茸| 狠狠综合久久av一区二区小说| 欧美熟妇另类久久久久久不卡 | 97国产一区二区精品久久呦 | 麻豆亚洲av熟女国产一区二| 欧美一区二区视频在线观看2022| 黄色一级大片在线免费看产| 91精品免费视频| 欧美黄色大片网站| www.黄色网| 欧美日韩加勒比精品一区| 日本一区高清| 国产精品久久久久久亚洲影视| 俺要去色综合狠狠| 欧美一级xxxx| 亚洲精品欧美在线| 免费av网站观看| 91av在线国产| 欧美三级情趣内衣| 一本一道久久a久久综合蜜桃| 亚洲精品水蜜桃| 天天在线女人的天堂视频| 国产成人精品在线观看| 欧美第十八页| 国产51自产区| 色乱码一区二区三区88| 欧美另类极品| 国产女人水真多18毛片18精品| 一本一本久久| 丁香六月激情综合| 欧美成人免费网站| 色偷偷色偷偷色偷偷在线视频| 视频一区二区三区免费观看| 国产一区二区三区在线看麻豆| 日本少妇性高潮| 一区二区三区在线不卡| 久久这里只精品| 国产嫩草影院久久久久| 国产乱人乱偷精品视频| 国产91成人在在线播放| 久久精品国产亚洲夜色av网站| 国产成人精品一区二区在线小狼 | 成熟丰满熟妇高潮xxxxx视频| 国产欧美精品一区二区色综合朱莉 | 黄色一级片在线观看| 久久精品国产第一区二区三区最新章节 | 91伦理视频在线观看| 国产精品视频500部| 日韩成人免费在线| 久久老司机精品视频| 永久免费毛片在线播放不卡| theporn国产在线精品|