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

聊一聊前端性能優(yōu)化 CRP

開發(fā) 前端
今天我們結(jié)合一道非常經(jīng)典的面試題:從輸入URL到頁面展示,這中間發(fā)生了什么?來從其中的某些環(huán)節(jié),來深入談?wù)勄岸诵阅軆?yōu)化 CRP。

什么是 CRP?

CRP又稱關(guān)鍵渲染路徑,引用MDN對它的解釋:

關(guān)鍵渲染路徑是指瀏覽器通過把 HTML、CSS 和 JavaScript 轉(zhuǎn)化成屏幕上的像素的步驟順序。優(yōu)化關(guān)鍵渲染路徑可以提高渲染性能。關(guān)鍵渲染路徑包含了 Document Object Model (DOM),CSS Object Model (CSSOM),渲染樹和布局。

優(yōu)化關(guān)鍵渲染路徑可以提升首屏渲染時間。理解和優(yōu)化關(guān)鍵渲染路徑對于確保回流和重繪可以每秒 60 幀、確保高性能的用戶交互和避免無意義渲染至關(guān)重要。

如何結(jié)合CRP進(jìn)行性能優(yōu)化?

我想對于性能優(yōu)化,大家都不陌生,無論是平時的工作還是面試,是一個老生常談的話題。

如果單純針對一些點(diǎn)去泛泛而談,我想是不太嚴(yán)謹(jǐn)?shù)摹?/p>

今天我們結(jié)合一道非常經(jīng)典的面試題:從輸入URL到頁面展示,這中間發(fā)生了什么?來從其中的某些環(huán)節(jié),來深入談?wù)勄岸诵阅軆?yōu)化 CRP。

從輸入 URL 到頁面展示,這中間發(fā)生了什么?

這道題的經(jīng)典程度想必不用我多說,這里我用一張圖梳理了它的大致流程:

這個過程可以大致描述為如下:

  • URI 解析
  • DNS 解析(DNS 服務(wù)器)
  • TCP 三次握手(建立客戶端和服務(wù)器端的連接通道)
  • 發(fā)送 HTTP 請求
  • 服務(wù)器處理和響應(yīng)
  • TCP 四次揮手(關(guān)閉客戶端和服務(wù)器端的連接)
  • 瀏覽器解析和渲染
  • 頁面加載完成

本文我會從瀏覽器渲染過程、緩存、DNS 優(yōu)化幾方面進(jìn)行性能優(yōu)化的說明。

瀏覽器渲染過程

1. 構(gòu)建 DOM 樹

構(gòu)建DOM樹的大致流程梳理為下圖:

我們以下面這段代碼為例進(jìn)行分析:

  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.     <meta name="viewport" content="width=device-width,initial-scale=1"> 
  5.     <link href="style.css" rel="stylesheet"> 
  6.     <title>構(gòu)建DOM樹</title> 
  7.   </head> 
  8.   <body> 
  9.     <p>森林</p> 
  10.     <div>之晨</div> 
  11.   </body> 
  12. </html> 

首先瀏覽器從磁盤或網(wǎng)絡(luò)中讀取 HTML 原始字節(jié),并根據(jù)文件的指定編碼將它們轉(zhuǎn)成字符。

然后通過分詞器將字節(jié)流轉(zhuǎn)換為 Token,在Token(也就是令牌)生成的同時,另一個流程會同時消耗這些令牌并轉(zhuǎn)換成 HTML head 這些節(jié)點(diǎn)對象,起始和結(jié)束令牌表明了節(jié)點(diǎn)之間的關(guān)系。

當(dāng)所有的令牌消耗完以后就轉(zhuǎn)換成了DOM(文檔對象模型)。

最終構(gòu)建出的DOM結(jié)構(gòu)如下:

2. 構(gòu)建 CSSOM 樹

DOM樹構(gòu)建完成,接下來就是CSSOM樹的構(gòu)建了。

與HTML的轉(zhuǎn)換類似,瀏覽器會去識別CSS正確的令牌,然后將這些令牌轉(zhuǎn)化成CSS節(jié)點(diǎn)。

子節(jié)點(diǎn)會繼承父節(jié)點(diǎn)的樣式規(guī)則,這里對應(yīng)的就是層疊規(guī)則和層疊樣式表。

構(gòu)建DOM樹的大致流程可梳理為下圖:

我們這里采用上面的HTML為例,假設(shè)它有如下 css:

  1. body { 
  2.   font-size: 16px; 
  3. p { 
  4.   font-weight: bold; 
  5. div { 
  6.   color: orange; 

那么最終構(gòu)建出的CSSOM樹如下:

有了 DOM 和 CSSOM,接下來就可以合成布局樹(Render Tree)了。

3. 構(gòu)建渲染樹

等 DOM 和 CSSOM 都構(gòu)建好之后,渲染引擎就會構(gòu)造布局樹。布局樹的結(jié)構(gòu)基本上就是復(fù)制 DOM 樹的結(jié)構(gòu),不同之處在于 DOM 樹中那些不需要顯示的元素會被過濾掉,如 display:none 屬性的元素、head 標(biāo)簽、script 標(biāo)簽等。

復(fù)制好基本的布局樹結(jié)構(gòu)之后,渲染引擎會為對應(yīng)的 DOM 元素選擇對應(yīng)的樣式信息,這個過程就是樣式計算。

4. 樣式計算

樣式計算的目的是為了計算出 DOM 節(jié)點(diǎn)中每個元素的具體樣式,這個階段大體可分為三步來完成。

(1) 把 CSS 轉(zhuǎn)換為瀏覽器能夠理解的結(jié)構(gòu)

和 HTML 文件一樣,瀏覽器也是無法直接理解這些純文本的 CSS 樣式,所以當(dāng)渲染引擎接收到 CSS 文本時,會執(zhí)行一個轉(zhuǎn)換操作,將 CSS 文本轉(zhuǎn)換為瀏覽器可以理解的結(jié)構(gòu)——styleSheets。

(2) 轉(zhuǎn)換樣式表中的屬性值,使其標(biāo)準(zhǔn)化

現(xiàn)在我們已經(jīng)把現(xiàn)有的 CSS 文本轉(zhuǎn)化為瀏覽器可以理解的結(jié)構(gòu)了,那么接下來就要對其進(jìn)行屬性值的標(biāo)準(zhǔn)化操作。

什么是屬性值標(biāo)準(zhǔn)化?我們來看這樣的一段CSS:

  1. body { 
  2.   font-size: 2em; 
  3. div { 
  4.   font-weight: bold; 
  5. div { 
  6.   color: red; 

可以看到上面的 CSS 文本中有很多屬性值,如 2em、bold、red,這些類型數(shù)值不容易被渲染引擎理解,所以需要將所有值轉(zhuǎn)換為渲染引擎容易理解的、標(biāo)準(zhǔn)化的計算值,這個過程就是屬性值標(biāo)準(zhǔn)化。

那標(biāo)準(zhǔn)化后的屬性值是什么樣子的?

從圖中可以看到,2em 被解析成了 32px,bold 被解析成了 700,red 被解析成了 rgb(255,0,0)……

(3) 計算出 DOM 樹中每個節(jié)點(diǎn)的具體樣式

現(xiàn)在樣式的屬性已被標(biāo)準(zhǔn)化了,接下來就需要計算 DOM 樹中每個節(jié)點(diǎn)的樣式屬性了,如何計算呢?

這其中涉及到兩點(diǎn):CSS 的繼承規(guī)則和層疊規(guī)則。

這里由于不是本文的重點(diǎn),我簡單做下說明:

  • CSS 繼承就是每個 DOM 節(jié)點(diǎn)都包含有父節(jié)點(diǎn)的樣式
  • 層疊是 CSS 的一個基本特征,它是一個定義了如何合并來自多個源的屬性值的算法。它在 CSS 處于核心地位,CSS 的全稱“層疊樣式表”正是強(qiáng)調(diào)了這一點(diǎn)。

樣式計算完成之后,渲染引擎還需要計算布局樹中每個元素對應(yīng)的幾何位置,這個過程就是計算布局。

5. 計算布局

現(xiàn)在,我們有 DOM 樹和 DOM 樹中元素的樣式,但這還不足以顯示頁面,因為我們還不知道 DOM 元素的幾何位置信息。那么接下來就需要計算出 DOM 樹中可見元素的幾何位置,我們把這個計算過程叫做布局。

6. 繪制

通過樣式計算和計算布局就完成了最終布局樹的構(gòu)建。再之后,就該進(jìn)行后續(xù)的繪制操作了。

到這里,瀏覽器的渲染過程就基本結(jié)束了,通過下面的一張圖來梳理下:

到這里我們已經(jīng)把瀏覽器解析和渲染的完整流程梳理完成了,那么這其中有那些地方可以去做性能優(yōu)化呢?

從瀏覽器的渲染過程中可以做的優(yōu)化點(diǎn)

通常一個頁面有三個階段:加載階段、交互階段和關(guān)閉階段。

  • 加載階段,是指從發(fā)出請求到渲染出完整頁面的過程,影響到這個階段的主要因素有網(wǎng)絡(luò)和 JavaScript 腳本。
  • 交互階段,主要是從頁面加載完成到用戶交互的整合過程,影響到這個階段的主要因素是 JavaScript 腳本。
  • 關(guān)閉階段,主要是用戶發(fā)出關(guān)閉指令后頁面所做的一些清理操作。

這里我們需要重點(diǎn)關(guān)注加載階段和交互階段,因為影響到我們體驗的因素主要都在這兩個階段,下面我們就來逐個詳細(xì)分析下。

1. 加載階段

我們先來分析如何系統(tǒng)優(yōu)化加載階段中的頁面,來看一個典型的渲染流水線,如下圖所示:

通過上面對瀏覽器渲染過程的分析我們知道JavaScript、首次請求的 HTML 資源文件、CSS 文件是會阻塞首次渲染的,因為在構(gòu)建 DOM 的過程中需要 HTML 和 JavaScript 文件,在構(gòu)造渲染樹的過程中需要用到 CSS 文件。

這些能阻塞網(wǎng)頁首次渲染的資源稱為關(guān)鍵資源。而基于關(guān)鍵資源,我們可以繼續(xù)細(xì)化出三個影響頁面首次渲染的核心因素:

  • 關(guān)鍵資源個數(shù)。關(guān)鍵資源個數(shù)越多,首次頁面的加載時間就會越長。
  • 關(guān)鍵資源大小。通常情況下,所有關(guān)鍵資源的內(nèi)容越小,其整個資源的下載時間也就越短,那么阻塞渲染的時間也就越短。
  • 請求關(guān)鍵資源需要多少個RTT(Round Trip Time)。RTT 是網(wǎng)絡(luò)中一個重要的性能指標(biāo),表示從發(fā)送端發(fā)送數(shù)據(jù)開始,到發(fā)送端收到來自接收端的確認(rèn),總共經(jīng)歷的時延。

了解了影響加載過程中的幾個核心因素之后,接下來我們就可以系統(tǒng)性地考慮優(yōu)化方案了。總的優(yōu)化原則就是減少關(guān)鍵資源個數(shù),降低關(guān)鍵資源大小,降低關(guān)鍵資源的 RTT 次數(shù):

  • 如何減少關(guān)鍵資源的個數(shù)?一種方式是可以將 JavaScript 和 CSS 改成內(nèi)聯(lián)的形式,比如上圖的 JavaScript 和 CSS,若都改成內(nèi)聯(lián)模式,那么關(guān)鍵資源的個數(shù)就由 3 個減少到了 1 個。另一種方式,如果 JavaScript 代碼沒有 DOM 或者 CSSOM 的操作,則可以改成 sync 或者 defer 屬性
  • 如何減少關(guān)鍵資源的大小?可以壓縮 CSS 和 JavaScript 資源,移除 HTML、CSS、JavaScript 文件中一些注釋內(nèi)容
  • 如何減少關(guān)鍵資源 RTT 的次數(shù)?可以通過減少關(guān)鍵資源的個數(shù)和減少關(guān)鍵資源的大小搭配來實現(xiàn)。除此之外,還可以使用 CDN 來減少每次 RTT 時長。

2. 交互階段

接下來我們再來聊聊頁面加載完成之后的交互階段以及應(yīng)該如何去優(yōu)化。

先來看看交互階段的渲染流水線:

其實這塊大致有以下幾點(diǎn)可以優(yōu)化:

(1) 避免DOM的回流。也就是盡量避免重排和重繪操作。

(2) 減少 JavaScript 腳本執(zhí)行時間。有時JavaScript 函數(shù)的一次執(zhí)行時間可能有幾百毫秒,這就嚴(yán)重霸占了主線程執(zhí)行其他渲染任務(wù)的時間。針對這種情況我們可以采用以下兩種策略:

  • 一種是將一次執(zhí)行的函數(shù)分解為多個任務(wù),使得每次的執(zhí)行時間不要過久。
  • 另一種是采用 Web Workers。

(3) DOM操作相關(guān)的優(yōu)化。瀏覽器有渲染引擎和JS引擎,所以當(dāng)用JS操作DOM時,這兩個引擎要通過接口互相“交流”,因此每一次操作DOM(包括只是訪問DOM的屬性),都要進(jìn)行引擎之間解析的開銷,所以常說要減少 DOM 操作。總結(jié)下來有以下幾點(diǎn):

  • 緩存一些計算屬性,如let left = el.offsetLeft。
  • 通過DOM的class來集中改變樣式,而不是通過style一條條的去修改。
  • 分離讀寫操作。現(xiàn)代的瀏覽器都有渲染隊列的機(jī)制。
  • 放棄傳統(tǒng)操作DOM的時代,基于vue/react等采用virtual dom的框架

(4) 合理利用 CSS 合成動畫。合成動畫是直接在合成線程上執(zhí)行的,這和在主線程上執(zhí)行的布局、繪制等操作不同,如果主線程被 JavaScript 或者一些布局任務(wù)占用,CSS 動畫依然能繼續(xù)執(zhí)行。所以要盡量利用好 CSS 合成動畫,如果能讓 CSS 處理動畫,就盡量交給 CSS 來操作。

(5) CSS選擇器優(yōu)化。我們知道CSS引擎查找是從右向左匹配的。所以基于此有以下幾條優(yōu)化方案:

  • 盡量不要使用通配符
  • 少用標(biāo)簽選擇器
  • 盡量利用屬性繼承特性

(6) CSS屬性優(yōu)化。瀏覽器繪制圖像時,CSS的計算也是耗費(fèi)性能的,一些屬性需瀏覽器進(jìn)行大量的計算,屬于昂貴的屬性(box-shadows、border-radius、transforms、filters、opcity、:nth-child等),這些屬性在日常開發(fā)中經(jīng)常用到,所以并不是說不要用這些屬性,而是在開發(fā)中,如果有其它簡單可行的方案,那可以優(yōu)先選擇沒有昂貴屬性的方案。

(7) 避免頻繁的垃圾回收。我們知道 JavaScript 使用了自動垃圾回收機(jī)制,如果在一些函數(shù)中頻繁創(chuàng)建臨時對象,那么垃圾回收器也會頻繁地去執(zhí)行垃圾回收策略。這樣當(dāng)垃圾回收操作發(fā)生時,就會占用主線程,從而影響到其他任務(wù)的執(zhí)行,嚴(yán)重的話還會讓用戶產(chǎn)生掉幀、不流暢的感覺。

緩存

緩存可以說是性能優(yōu)化中簡單高效的一種優(yōu)化方式了。一個優(yōu)秀的緩存策略可以縮短網(wǎng)頁請求資源的距離,減少延遲,并且由于緩存文件可以重復(fù)利用,還可以減少帶寬,降低網(wǎng)絡(luò)負(fù)荷。下圖是瀏覽器緩存的查找流程圖:

瀏覽器緩存相關(guān)的知識點(diǎn)還是很多的,這里我有整理一張圖:

DNS 相關(guān)優(yōu)化

DNS全稱Domain Name System。它是互聯(lián)網(wǎng)的“通訊錄”,它記錄了域名與實際ip地址的映射關(guān)系。每次我們訪問一個網(wǎng)站,都要通過各級的DNS服務(wù)器查詢到該網(wǎng)站的服務(wù)器ip,然后才能訪問到該服務(wù)器。

DNS相關(guān)的優(yōu)化一般涉及到兩點(diǎn):瀏覽器DNS緩存和DNS預(yù)解析。

1. DNS緩存

一圖勝千言:

  • 瀏覽器會先檢查瀏覽器緩存(瀏覽器緩存有大小和時間限制),時間過長可能導(dǎo)致IP地址變化,無法解析正確IP地址,過短就會讓瀏覽器重復(fù)解析域名,一般為幾分鐘。
  • 如果瀏覽器緩存沒有對應(yīng)域名,則會去操作系統(tǒng)緩存中查找。
  • 如果還沒有找到,域名就會發(fā)送到本地區(qū)的域名服務(wù)器(一般由互聯(lián)網(wǎng)供應(yīng)商提供,電信、聯(lián)通之類),一般在本地區(qū)的域名服務(wù)器上都能找到了。
  • 當(dāng)然也可能本地域名服務(wù)器也沒找到,那本地域名服務(wù)器就開始遞歸查找。

一般而言,瀏覽器解析DNS需要20-120ms,因此DNS解析可優(yōu)化之處幾乎沒有。但存在這樣一個場景,網(wǎng)站有很多圖片在不同域名下,那如果在登錄頁就提前解析了之后可能會用到的域名,使解析結(jié)果緩存過,這樣縮短了DNS解析時間,提高網(wǎng)站整體上的訪問速度了,這就是DNS預(yù)解析。

2. DNS預(yù)解析

來看下 MDN 對于DNS預(yù)解析的定義吧:

X-DNS-Prefetch-Control 頭控制著瀏覽器的 DNS 預(yù)讀取功能。DNS 預(yù)讀取是一項使瀏覽器主動去執(zhí)行域名解析的功能,其范圍包括文檔的所有鏈接,無論是圖片的,CSS 的,還是 JavaScript 等其他用戶能夠點(diǎn)擊的 URL。

因為預(yù)讀取會在后臺執(zhí)行,所以 DNS 很可能在鏈接對應(yīng)的東西出現(xiàn)之前就已經(jīng)解析完畢。這能夠減少用戶點(diǎn)擊鏈接時的延遲。

我們這里就簡單看一下如何去做DNS預(yù)解析:

在頁面頭部加入,這樣瀏覽器對整個頁面進(jìn)行預(yù)解析

  1. <meta http-equiv="x-dns-prefetch-control" content="on"> 

通過 link 標(biāo)簽手動添加要解析的域名,比如:

  1. <link rel="dns-prefetch" href="//img10.360buyimg.com"/> 

 

責(zé)任編輯:趙寧寧 來源: 前端森林
相關(guān)推薦

2021-01-01 09:01:05

前端組件化設(shè)計

2021-11-24 22:47:07

Docker開發(fā)容器

2020-05-09 14:20:11

信息安全加密

2024-03-08 09:51:12

Linux網(wǎng)絡(luò)性能

2019-09-19 16:59:04

數(shù)據(jù)結(jié)構(gòu)設(shè)計數(shù)據(jù)庫

2023-02-07 06:42:24

Pulsar負(fù)載均衡

2022-11-09 18:38:08

視頻清晰度

2018-06-07 13:17:12

契約測試單元測試API測試

2021-01-28 22:31:33

分組密碼算法

2020-05-22 08:16:07

PONGPONXG-PON

2023-09-22 17:36:37

2020-08-12 08:34:16

開發(fā)安全We

2022-10-08 11:33:56

邊緣計算云計算

2022-11-26 00:00:06

裝飾者模式Component

2020-06-28 09:30:37

Linux內(nèi)存操作系統(tǒng)

2022-03-08 16:10:38

Redis事務(wù)機(jī)制

2022-03-29 09:56:21

游戲版本運(yùn)營

2018-01-10 14:13:04

測試矩陣API測試

2020-09-08 06:54:29

Java Gradle語言

2019-12-17 10:06:18

CDMA高通4G
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久久久国色av免费观看性色| 黑人巨大精品欧美一区二区一视频 | 成人免费黄色av| 亚洲天堂伊人网| 国产美女福利视频| 日韩一区免费| 一本大道av伊人久久综合| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国产99久久九九精品无码免费| 亚洲精品123区| 国产一区二区日韩| 日本天堂在线播放| 成人午夜一级| 天天色天天操综合| 一级二级三级欧美| 神马精品久久| 国模无码大尺度一区二区三区| 98精品国产自产在线观看| 成人信息集中地| 青青久久av| 欧美一级一区二区| av网站在线不卡| 看黄在线观看| 一区二区欧美在线观看| 亚洲精品一区二区三区蜜桃久| 免费av网站在线播放| 久久国产精品99精品国产| 51久久精品夜色国产麻豆| 日本一二三区在线观看| 欧洲乱码伦视频免费| 亚洲福利视频网| 天堂av.com| 国产麻豆一区| 色激情天天射综合网| 国产美女网站在线观看| 中文在线手机av| 一区二区中文视频| 亚洲国产日韩综合一区| 免费在线超碰| 久久日一线二线三线suv| 懂色中文一区二区三区在线视频 | 亚洲视频1区| 欧美成人免费小视频| 成人黄色短视频| 日韩成人综合| 中文字幕日韩av| 性欧美一区二区| 一本色道久久综合亚洲精品酒店 | 成人高清视频观看www| 五月婷婷六月婷婷| 日日夜夜精品视频天天综合网| 国外视频精品毛片| 国产无遮挡aaa片爽爽| 国产一区观看| 欧美精品videosex牲欧美| 天天综合天天做| 欧美不卡视频| 色综合色综合久久综合频道88| 男人操女人的视频网站| 欧美精品导航| 欧美激情亚洲综合一区| 国产在线一二区| 亚洲高清久久| 97av视频在线| 中文字幕日韩免费| 日本视频在线一区| 国产在线拍偷自揄拍精品| 国产精品欧美综合亚洲| 国产老肥熟一区二区三区| 亚洲自拍偷拍色图| 好男人在线视频www| 91美女在线观看| 日本一区二区三区视频在线观看| 国产视频网址在线| 中文字幕永久在线不卡| 久久国产精品免费观看| av岛国在线| 91久久免费观看| 久热在线视频观看| 一区二区在线免费播放| 日韩av在线电影网| www.涩涩爱| 国产精品va| 91av国产在线| 一区二区不卡视频在线观看| 国产成人h网站| 欧美视频1区| 国产成人无吗| 欧美午夜电影在线| 日韩成人av免费| 大型av综合网站| 一本色道久久88综合日韩精品| 综合五月激情网| 亚洲作爱视频| 91久久久久久久久| 色婷婷激情五月| 国产精品视频第一区| 真实国产乱子伦对白视频| 在线观看特色大片免费视频| 欧美日本视频在线| 成人无码www在线看免费| 天天综合久久| 欧美一区二区视频97| 97caocao| 久久久五月婷婷| 91成人在线视频观看| 咪咪网在线视频| 在线播放视频一区| 醉酒壮男gay强迫野外xx| 98精品久久久久久久| 亚洲91av视频| 国产精品一品二区三区的使用体验| 99久久婷婷国产综合精品电影| 亚洲日本精品| 自拍视频在线看| 精品久久久影院| 久久一级免费视频| 久久免费黄色| caoporn国产精品免费公开| 第一页在线观看| 欧美日韩国产综合视频在线观看中文| 亚洲综合婷婷久久| 精品国产欧美日韩| 欧美一级大片在线免费观看| 精品国自产拍在线观看| 国产精品久久久久aaaa樱花 | 成人黄色动漫| 91精品国产色综合久久久蜜香臀| a级片在线观看| 99精品99| 国产精品久久久久久久免费大片 | 性欧美亚洲xxxx乳在线观看| 国产精品一品二区三区的使用体验| 欧美韩国日本不卡| 欧美 日韩 国产一区| 欧洲亚洲视频| 538国产精品视频一区二区| 六月婷婷中文字幕| 亚洲图片欧美一区| 一级黄色免费毛片| 中文字幕日韩欧美精品高清在线| 国产美女扒开尿口久久久| 国产午夜在线视频| 91高清视频在线| 亚洲天堂视频一区| 久久精品午夜| 日本精品一区二区| 人人鲁人人莫人人爱精品| 日韩精品久久久久久福利| 国产精品xxxx喷水欧美| 波多野洁衣一区| 国产成人无码a区在线观看视频| 北条麻妃一区二区三区在线| 久久久久国色av免费观看性色 | 亚洲欧美中文日韩在线v日本| 青青操免费在线视频| 99国产欧美另类久久久精品 | 麻豆国产精品一区二区三区| 视频一区二区在线观看| 国产人妖一区| 久色乳综合思思在线视频| www.av在线.com| 亚洲伊人色欲综合网| 日韩少妇一区二区| 亚洲精品婷婷| 日韩av一区二区三区在线观看| 久久精品女人天堂av免费观看| 亚洲天堂av在线免费观看| 中文天堂在线资源| 亚洲精品中文在线观看| 久草视频福利在线| 久久久久久久高潮| 亚洲一区三区电影在线观看| 欧美特黄不卡| 91精品国产高清久久久久久91| 久久经典视频| 久久久久免费网| 免费看av毛片| 欧美日韩免费在线观看| 国产一区二区三区精品在线| 久久99久久99小草精品免视看| 99re99热| 欧美激情极品| 国产女同一区二区| 丰满诱人av在线播放| 亚洲男人天堂2019| 国产一区二区三区四区视频| 亚洲一区二区三区在线看| 成年人在线观看av| 国产呦萝稀缺另类资源| 国产精品裸体瑜伽视频| 色呦哟—国产精品| 国产一区二区精品免费| 成人深夜福利| 98精品国产自产在线观看| 色综合久久影院| 亚洲国产成人精品一区二区| 中文字幕观看视频| 午夜电影网一区| 亚洲色图27p| 久久久久久久久久久久久女过产乱| 亚洲美女少妇无套啪啪呻吟| 日本精品一区| 亚洲开心激情| 国产精品爽爽爽爽爽爽在线观看| 污视频网站在线免费| 亚洲人成在线观看| 懂色av成人一区二区三区| 欧美日韩精品一区二区三区蜜桃| 九九九国产视频| 中文字幕在线免费不卡| 好吊视频在线观看| 丰满亚洲少妇av| 午夜剧场在线免费观看| 麻豆精品网站| 久久手机在线视频| 久久精品影视| 丝袜美腿玉足3d专区一区| h视频久久久| 91精品视频在线| 91av一区| 国产成人亚洲综合91| 僵尸再翻生在线观看| 欧美精品制服第一页| av片在线看| 亚洲欧美激情精品一区二区| 人妻夜夜爽天天爽| 精品国产一区a| 99国产揄拍国产精品| 欧美日韩国产一二三| 国产精品尤物视频| 在线日韩国产精品| 免费看污视频的网站| 欧美性猛交xxxxx水多| 精品久久免费视频| 亚洲制服丝袜av| 免费麻豆国产一区二区三区四区| 亚洲图片激情小说| 国产人与禽zoz0性伦| 国产精品沙发午睡系列990531| 五月天精品视频| 久久精品一区四区| xxxx日本免费| 国产亚洲一区二区在线观看| 91精彩刺激对白露脸偷拍| 91影院在线免费观看| 亚州av综合色区无码一区| 成人免费av在线| 疯狂揉花蒂控制高潮h| 99视频一区二区| 18禁裸乳无遮挡啪啪无码免费| 91亚洲精品乱码久久久久久蜜桃| 中国一级特黄录像播放| 99久久99久久精品免费看蜜桃| 荫蒂被男人添免费视频| www.66久久| 人妻丰满熟妇av无码久久洗澡| 91亚洲精品乱码久久久久久蜜桃| 性少妇bbw张开| 日本一区二区免费在线观看视频| avhd101老司机| 综合久久久久久| 欧美成欧美va| 午夜精品久久久久久久久久久| 国产成人亚洲欧洲在线| 色狠狠色噜噜噜综合网| 国产有码在线观看| 欧美大胆人体bbbb| 色鬼7777久久| 色香阁99久久精品久久久| 黄在线免费看| 性色av一区二区三区在线观看 | 亚洲区小说区| 任我爽在线视频精品一| 999久久久免费精品国产| 美女在线免费视频| 日韩视频一区| 一本色道久久亚洲综合精品蜜桃| 精品一区中文字幕| 国产精品久久久久久亚洲色| 久久精品一区二区三区不卡牛牛| 亚洲熟女少妇一区二区| 亚洲一级片在线观看| 香蕉影院在线观看| 91精品国产麻豆国产自产在线| 四虎永久在线观看| 中文字幕一区日韩电影| 国产三线在线| 国产精品专区第二| 精品国产午夜肉伦伦影院| 亚洲成人午夜在线| 欧美日韩hd| 手机在线看福利| 成人av在线播放网址| 人妻互换一区二区激情偷拍| 亚洲一区二区三区四区在线免费观看 | 亚洲国产精品久久不卡毛片| 一级久久久久久| 亚洲第一精品久久忘忧草社区| 福利成人在线观看| 97免费中文视频在线观看| 久久精品超碰| 欧美激情论坛| 欧美日韩精品免费观看视频完整| 欧美视频免费播放| 成人综合婷婷国产精品久久蜜臀| jizz18女人高潮| 福利一区福利二区微拍刺激| 国产极品999| 在线亚洲午夜片av大片| 蜜桃视频动漫在线播放| 69174成人网| 国产精品精品国产一区二区| 国产一区亚洲二区三区| 不卡的av中国片| 国产精品老熟女一区二区| 欧美吻胸吃奶大尺度电影| 午夜国产在线视频| 欧美激情精品久久久久久久变态| 日韩成人综合网| 日韩.欧美.亚洲| 国产精品五区| 国产精品入口麻豆| 亚洲激情校园春色| 国产精品呻吟久久| 日韩亚洲欧美成人| 国产成+人+综合+亚洲欧美| 鲁片一区二区三区| 夜夜嗨一区二区三区| 99免费观看视频| 亚洲综合一区在线| 国产xxxxxx| 美女少妇精品视频| 精品国产亚洲一区二区三区大结局| 亚洲mv在线看| 蜜臀av国产精品久久久久| 久久久视频6r| 欧美日韩亚州综合| 在线a人片免费观看视频| 国产精品www| 精品亚洲成人| 一区二区三区免费播放| 中文字幕精品一区二区三区精品| 国产一级淫片a视频免费观看| 国产资源在线观看| 一区三区二区视频| 国产成人免费9x9x人网站视频| 久久久久久九九| 亚洲综合精品| 丰满少妇高潮一区二区| 色综合激情久久| 国产一二三区在线视频| 日韩av三级在线观看| 蜜桃成人av| 超碰在线人人爱| 综合久久久久综合| www.色视频| 国产69精品久久久久9999| 欧美黄色影院| 男女爽爽爽视频| 成人免费在线观看入口| 精品国产av一区二区三区| 欧美激情伊人电影| 人人精品视频| 牛夜精品久久久久久久| 亚洲人成网站在线| 国产精品极品美女在线观看免费 | 婷婷亚洲综合| 中文字幕色网站| 亚洲在线视频免费观看| 午夜国产在线观看| 国产精品综合久久久| 欧美日本中文| 精品夜夜澡人妻无码av| 欧美三级在线看| 污网站在线免费看| 欧美极品一区二区| 精品一区二区三区欧美| 精品一区二区三区人妻| 亚洲色图日韩av| 日本精品视频| 欧美日韩在线不卡视频| 亚洲欧洲日韩综合一区二区| 亚洲成人黄色片| 日本精品久久电影| 国产高清久久| 青青草成人免费视频| 欧美男同性恋视频网站| caoporn-草棚在线视频最| 日韩av大全| 丁香婷婷综合五月| 中文字幕在线观看欧美| 欧美激情国产精品| 欧美综合久久| 亚洲av成人片无码| 91精品国产全国免费观看| 自由日本语热亚洲人| 亚洲伊人观看| 国产精品久久久免费看| 欧美精品一区二区三|