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

你不知道的瀏覽器頁面渲染機制

原創
系統 瀏覽器
目前市面上常見的瀏覽器內核可以分為這四種:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)。這里面大家最耳熟能詳的可能就是 Webkit 內核了,Webkit 內核是當下瀏覽器世界真正的霸主。 本文我們就以 Webkit 為例,對現代瀏覽器的渲染過程進行一個深度的剖析。

【51CTO.com原創稿件】】瀏覽器的內核是指支持瀏覽器運行的最核心的程序,分為兩個部分的,一是渲染引擎,另一個是JS引擎。渲染引擎在不同的瀏覽器中也不是都相同的。目前市面上常見的瀏覽器內核可以分為這四種:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)。這里面大家最耳熟能詳的可能就是 Webkit 內核了,Webkit 內核是當下瀏覽器世界真正的霸主。 本文我們就以 Webkit 為例,對現代瀏覽器的渲染過程進行一個深度的剖析。

[[261665]]

頁面加載過程

在介紹瀏覽器渲染過程之前,我們簡明扼要介紹下頁面的加載過程,有助于更好理解后續渲染過程。

要點如下:

  • 瀏覽器根據 DNS 服務器得到域名的 IP 地址
  • 向這個 IP 的機器發送 HTTP 請求
  • 服務器收到、處理并返回 HTTP 請求
  • 瀏覽器得到返回內容

例如在瀏覽器輸入https://juejin.im/timeline,然后經過 DNS 解析,juejin.im對應的 IP 是36.248.217.149(不同時間、地點對應的 IP 可能會不同)。然后瀏覽器向該 IP 發送 HTTP 請求。

服務端接收到 HTTP 請求,然后經過計算(向不同的用戶推送不同的內容),返回 HTTP 請求,返回的內容如下:

其實就是一堆 HMTL 格式的字符串,因為只有 HTML 格式瀏覽器才能正確解析,這是 W3C 標準的要求。接下來就是瀏覽器的渲染過程。

瀏覽器渲染過程

瀏覽器渲染過程大體分為如下三部分:

(1)瀏覽器會解析三個東西:

  • 一是HTML/SVG/XHTML,HTML字符串描述了一個頁面的結構,瀏覽器會把HTML結構字符串解析轉換DOM樹形結構。

  • 二是CSS,解析CSS會產生CSS規則樹,它和DOM結構比較像。

  • 三是Javascript腳本,等到Javascript 腳本文件加載后, 通過 DOM API 和 CSSOM API 來操作 DOM Tree 和 CSS Rule Tree。

(2)解析完成后,瀏覽器引擎會通過DOM Tree 和 CSS Rule Tree 來構造 Rendering Tree。

  • Rendering Tree 渲染樹并不等同于DOM樹,渲染樹只會包括需要顯示的節點和這些節點的樣式信息。
  • CSS 的 Rule Tree主要是為了完成匹配并把CSS Rule附加上Rendering Tree上的每個Element。也就是DOM結點。也就是所謂的Frame。
  • 然后,計算每個Frame(也就是每個Element)的位置,這又叫layout和reflow過程。

(3)最后通過調用操作系統Native GUI的API繪制。

接下來我們針對這其中所經歷的重要步驟,一一詳細闡述。

構建DOM

瀏覽器會遵守一套步驟將HTML 文件轉換為 DOM 樹。宏觀上,可以分為幾個步驟:

  • 瀏覽器從磁盤或網絡讀取HTML的原始字節,并根據文件的指定編碼(例如 UTF-8)將它們轉換成字符串。

在網絡中傳輸的內容其實都是 0 和 1 這些字節數據。當瀏覽器接收到這些字節數據以后,它會將這些字節數據轉換為字符串,也就是我們寫的代碼。

  • 將字符串轉換成Token,例如:、等。Token中會標識出當前Token是“開始標簽”或是“結束標簽”亦或是“文本”等信息。

這時候你一定會有疑問,節點與節點之間的關系如何維護?

事實上,這就是Token要標識“起始標簽”和“結束標簽”等標識的作用。例如“title”Token的起始標簽和結束標簽之間的節點肯定是屬于“head”的子節點。

上圖給出了節點之間的關系,例如:“Hello”Token位于“title”開始標簽與“title”結束標簽之間,表明“Hello”Token是“title”Token的子節點。同理“title”Token是“head”Token的子節點。

  • 生成節點對象并構建DOM

事實上,構建DOM的過程中,不是等所有Token都轉換完成后再去生成節點對象,而是一邊生成Token一邊消耗Token來生成節點對象。換句話說,每個Token被生成后,會立刻消耗這個Token創建出節點對象。注意:帶有結束標簽標識的Token不會創建節點對象。

接下來我們舉個例子,假設有段HTML文本:

  1. <html> 
  2. <head> 
  3.     <title>Web page parsing</title> 
  4. </head> 
  5. <body> 
  6.     <div> 
  7.         <h1>Web page parsing</h1> 
  8.         <p>This is an example Web page.</p> 
  9.     </div> 
  10. </body> 
  11. </html> 

上面這段HTML會解析成這樣:

構建CSSOM

DOM會捕獲頁面的內容,但瀏覽器還需要知道頁面如何展示,所以需要構建CSSOM。

構建CSSOM的過程與構建DOM的過程非常相似,當瀏覽器接收到一段CSS,瀏覽器首先要做的是識別出Token,然后構建節點并生成CSSOM。

在這一過程中,瀏覽器會確定下每一個節點的樣式到底是什么,并且這一過程其實是很消耗資源的。因為樣式你可以自行設置給某個節點,也可以通過繼承獲得。在這一過程中,瀏覽器得遞歸 CSSOM 樹,然后確定具體的元素到底是什么樣式。

注意:CSS匹配HTML元素是一個相當復雜和有性能問題的事情。所以,DOM樹要小,CSS盡量用id和class,千萬不要過渡層疊下去。

構建渲染樹

當我們生成 DOM 樹和 CSSOM 樹以后,就需要將這兩棵樹組合為渲染樹。

在這一過程中,不是簡單的將兩者合并就行了。渲染樹只會包括需要顯示的節點和這些節點的樣式信息,如果某個節點是 display: none 的,那么就不會在渲染樹中顯示。

我們或許有個疑惑:瀏覽器如果渲染過程中遇到JS文件怎么處理?

渲染過程中,如果遇到<script>就停止渲染,執行 JS 代碼。因為瀏覽器渲染和 JS 執行共用一個線程,而且這里必須是單線程操作,多線程會產生渲染 DOM 沖突。 JavaScript的加載、解析與執行會阻塞DOM的構建,也就是說,在構建DOM時,HTML解析器若遇到了JavaScript,那么它會暫停構建DOM,將控制權移交給JavaScript引擎,等JavaScript引擎運行完畢,瀏覽器再從中斷的地方恢復DOM構建。

也就是說,如果你想首屏渲染的越快,就越不應該在首屏就加載 JS 文件,這也是都建議將 script 標簽放在 body 標簽底部的原因。當然在當下,并不是說 script 標簽必須放在底部,因為你可以給 script 標簽添加 defer 或者 async 屬性(下文會介紹這兩者的區別)。

JS文件不只是阻塞DOM的構建,它會導致CSSOM也阻塞DOM的構建。

原本DOM和CSSOM的構建是互不影響,井水不犯河水,但是一旦引入了JavaScript,CSSOM也開始阻塞DOM的構建,只有CSSOM構建完畢后,DOM再恢復DOM構建。

這是什么情況?

這是因為JavaScript不只是可以改DOM,它還可以更改樣式,也就是它可以更改CSSOM。因為不完整的CSSOM是無法使用的,如果JavaScript想訪問CSSOM并更改它,那么在執行JavaScript時,必須要能拿到完整的CSSOM。所以就導致了一個現象,如果瀏覽器尚未完成CSSOM的下載和構建,而我們卻想在此時運行腳本,那么瀏覽器將延遲腳本執行和DOM構建,直至其完成CSSOM的下載和構建。也就是說,在這種情況下,瀏覽器會先下載和構建CSSOM,然后再執行JavaScript,最后在繼續構建DOM。

布局與繪制

當瀏覽器生成渲染樹以后,就會根據渲染樹來進行布局(也可以叫做回流)。這一階段瀏覽器要做的事情是要弄清楚各個節點在頁面中的確切位置和大小。通常這一行為也被稱為“自動重排”。

布局流程的輸出是一個“盒模型”,它會精確地捕獲每個元素在視口內的確切位置和尺寸,所有相對測量值都將轉換為屏幕上的絕對像素。

布局完成后,瀏覽器會立即發出“Paint Setup”和“Paint”事件,將渲染樹轉換成屏幕上的像素。

以上我們詳細介紹了瀏覽器工作流程中的重要步驟,接下來我們討論幾個相關的問題:

幾點補充說明

1. async和defer的作用是什么?有什么區別?

接下來我們對比下 defer 和 async 屬性的區別:

async和defer

其中藍色線代表JavaScript加載;紅色線代表JavaScript執行;綠色線代表 HTML 解析。

(1)情況1<script src="script.js"></script>

沒有 defer 或 async,瀏覽器會立即加載并執行指定的腳本,也就是說不等待后續載入的文檔元素,讀到就加載并執行。

(2)情況2<script async src="script.js"></script>(異步下載)

async 屬性表示異步執行引入的 JavaScript,與 defer 的區別在于,如果已經加載好,就會開始執行——無論此刻是 HTML 解析階段還是 DOMContentLoaded 觸發之后。需要注意的是,這種方式加載的 JavaScript 依然會阻塞 load 事件。換句話說,async-script 可能在 DOMContentLoaded 觸發之前或之后執行,但一定在 load 觸發之前執行。

(3)情況3<script  defer src="script.js"></script>(延遲執行)

defer 屬性表示延遲執行引入的 JavaScript,即這段 JavaScript 加載時 HTML 并未停止解析,這兩個過程是并行的。整個 document 解析完畢且 defer-script 也加載完成之后(這兩件事情的順序無關),會執行所有由 defer-script 加載的 JavaScript 代碼,然后觸發 DOMContentLoaded 事件。

defer 與相比普通 script,有兩點區別:載入 JavaScript 文件時不阻塞 HTML 的解析,執行階段被放到 HTML 標簽解析完成之后。 在加載多個JS腳本的時候,async是無順序的加載,而defer是有順序的加載。

2. 為什么操作 DOM 慢

把 DOM 和 JavaScript 各自想象成一個島嶼,它們之間用收費橋梁連接。——《高性能 JavaScript》

JS 是很快的,在 JS 中修改 DOM 對象也是很快的。在JS的世界里,一切是簡單的、迅速的。但 DOM 操作并非 JS 一個人的獨舞,而是兩個模塊之間的協作。

因為 DOM 是屬于渲染引擎中的東西,而 JS 又是 JS 引擎中的東西。當我們用 JS 去操作 DOM 時,本質上是 JS 引擎和渲染引擎之間進行了“跨界交流”。這個“跨界交流”的實現并不簡單,它依賴了橋接接口作為“橋梁”(如下圖)。

過“橋”要收費——這個開銷本身就是不可忽略的。我們每操作一次 DOM(不管是為了修改還是僅僅為了訪問其值),都要過一次“橋”。過“橋”的次數一多,就會產生比較明顯的性能問題。因此“減少 DOM 操作”的建議,并非空穴來風。

3. 你真的了解回流和重繪嗎

我們知道,當網頁生成的時候,至少會渲染一次。在用戶訪問的過程中,還會不斷重新渲染。重新渲染會重復上圖中的第四步(回流)+第五步(重繪)或者只有第五個步(重繪)。

  • 重繪:當我們對 DOM 的修改導致了樣式的變化、卻并未影響其幾何屬性(比如修改了顏色或背景色)時,瀏覽器不需重新計算元素的幾何屬性、直接為該元素繪制新的樣式(跳過了上圖所示的回流環節)。
  • 回流:當我們對 DOM 的修改引發了 DOM 幾何尺寸的變化(比如修改元素的寬、高或隱藏元素等)時,瀏覽器需要重新計算元素的幾何屬性(其他元素的幾何屬性和位置也會因此受到影響),然后再將計算的結果繪制出來。這個過程就是回流(也叫重排)

回流必定會發生重繪,重繪不一定會引發回流。重繪和回流會在我們設置節點樣式時頻繁出現,同時也會很大程度上影響性能。回流所需的成本比重繪高的多,改變父節點里的子節點很可能會導致父節點的一系列回流。

(1)常見引起回流屬性和方法

任何會改變元素幾何信息(元素的位置和尺寸大小)的操作,都會觸發回流,

  • 添加或者刪除可見的DOM元素;
  • 元素尺寸改變——邊距、填充、邊框、寬度和高度
  • 內容變化,比如用戶在input框中輸入文字
  • 瀏覽器窗口尺寸改變——resize事件發生時
  • 計算 offsetWidth 和 offsetHeight 屬性
  • 設置 style 屬性的值

(2)常見引起重繪屬性和方法

(3)如何減少回流、重繪

  • 使用 transform 替代 top
  • 使用 visibility 替換 display: none ,因為前者只會引起重繪,后者會引發回流(改變了布局)
  • 不要把節點的屬性值放在一個循環里當成循環里的變量。
    1. for(let i = 0; i < 1000; i++) { 
    2.     // 獲取 offsetTop 會導致回流,因為需要去獲取正確的值 
    3.     console.log(document.querySelector('.test').style.offsetTop) 
  • 不要使用 table 布局,可能很小的一個小改動會造成整個 table 的重新布局
  • 動畫實現的速度的選擇,動畫速度越快,回流次數越多,也可以選擇使用 requestAnimationFrame
  • CSS 選擇符從右往左匹配查找,避免節點層級過多
  • 將頻繁重繪或者回流的節點設置為圖層,圖層能夠阻止該節點的渲染行為影響別的節點。比如對于 video 標簽來說,瀏覽器會自動將該節點變為圖層。

性能優化策略

基于上面介紹的瀏覽器渲染原理,DOM 和 CSSOM 結構構建順序,初始化可以對頁面渲染做些優化,提升頁面性能。

(1)JS優化:<script>標簽加上 defer屬性 和 async屬性 用于在不阻塞頁面文檔解析的前提下,控制腳本的下載和執行。

  • defer屬性: 用于開啟新的線程下載腳本文件,并使腳本在文檔解析完成后執行。
  • async屬性: HTML5新增屬性,用于異步下載腳本文件,下載完畢立即解釋執行代碼。

(2)CSS優化: <link>標簽的 rel屬性 中的屬性值設置為 preload 能夠讓你在你的HTML頁面中可以指明哪些資源是在頁面加載完成后即刻需要的,最優的配置加載順序,提高渲染性能

總結

綜上所述,我們得出這樣的結論:

  • 瀏覽器工作流程:構建DOM -> 構建CSSOM -> 構建渲染樹 -> 布局 -> 繪制。
  • CSSOM會阻塞渲染,只有當CSSOM構建完畢后才會進入下一個階段構建渲染樹。
  • 通常情況下DOM和CSSOM是并行構建的,但是當瀏覽器遇到一個不帶defer或async屬性的script標簽時,DOM構建將暫停,如果此時又恰巧瀏覽器尚未完成CSSOM的下載和構建,由于JavaScript可以修改CSSOM,所以需要等CSSOM構建完畢后再執行JS,最后才重新DOM構建。

作者簡介

浪里行舟:碩士研究生,專注于前端。個人公眾號:「前端工匠」,致力于打造適合初中級工程師能夠快速吸收的一系列優質文章!

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

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

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2011-09-15 17:10:41

2009-12-10 09:37:43

2022-10-13 11:48:37

Web共享機制操作系統

2021-02-01 23:23:39

FiddlerCharlesWeb

2011-11-29 09:12:22

Web

2010-08-23 09:56:09

Java性能監控

2019-11-25 14:05:47

Python裝飾器數據

2022-04-14 09:01:19

CSS父選擇器CSS類

2022-11-04 08:19:18

gRPC框架項目

2020-09-15 08:35:57

TypeScript JavaScript類型

2021-10-17 13:10:56

函數TypeScript泛型

2012-11-23 10:57:44

Shell

2020-08-11 11:20:49

Linux命令使用技巧

2015-06-19 13:54:49

2021-12-29 11:38:59

JS前端沙箱

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2025-09-09 10:00:00

前端瀏覽器API

2018-01-19 14:39:53

瀏覽器頁面優化
點贊
收藏

51CTO技術棧公眾號

亚洲天堂网视频| 九九热久久免费视频| caoporn视频在线| 久久久久亚洲蜜桃| 亚洲精品国产精品乱码不99按摩| 免费一级特黄毛片| 福利在线午夜| 国产成人精品网址| 国产成人福利网站| 2021亚洲天堂| 国内精品久久久久久久影视简单 | 国产孕妇孕交大片孕| 亚洲国产一区二区精品专区| 欧美视频三区在线播放| 精品无码av无码免费专区| 嫩草在线播放| 国产丶欧美丶日本不卡视频| 欧洲中文字幕国产精品| 午夜国产福利一区二区| 国产一区二区观看| 精品奇米国产一区二区三区| 色多多视频在线播放| 不卡av免费观看| 椎名由奈av一区二区三区| 你懂的视频在线一区二区| 国产三级午夜理伦三级| 日韩在线播放一区二区| 97在线观看免费高清| 内射一区二区三区| 色综合五月天| 国产一区av在线| 成人网站免费观看| 91精品国产自产在线丝袜啪 | 国产精品高潮呻吟久久| 久久综合精品一区| 丰满岳乱妇国产精品一区| 老司机午夜精品99久久| 日本久久精品视频| www.自拍偷拍| 成人欧美大片| 国产色91在线| 欧美二级三级| 无码精品人妻一区二区三区影院 | 日韩欧美高清视频| 97碰在线视频| 黄色av网址在线| 国产一区二区三区在线观看免费视频 | 法国空姐在线观看免费| 成人在线观看一区| 久久尤物电影视频在线观看| 精品中文字幕一区| 日韩有码第一页| 成人激情小说网站| 国产欧美一区二区视频| 日韩av一区二区在线播放| 欧美精品大片| 亚洲欧美www| 朝桐光av一区二区三区| 精品资源在线| 亚洲精品国产福利| 国产视频久久久久久| 亚洲成av在线| 欧美亚洲精品一区| 黄大色黄女片18第一次| 欧美视频在线视频精品| 欧美精品一卡二卡| 1314成人网| 中文字幕视频精品一区二区三区| 欧美变态口味重另类| 稀缺呦国内精品呦| 麻豆一区二区| 亚洲欧美视频在线| 又色又爽的视频| 亚洲精品一区二区妖精| 久久99热精品| 国产精彩视频在线| 久久日文中文字幕乱码| 亚洲精品久久久久久下一站| 久久久久久久久免费看无码 | 国产精品一级黄| 国产精品免费一区二区三区| 日本又骚又刺激的视频在线观看| 久久久不卡网国产精品二区| 正在播放一区二区三区| 国产丝袜精品丝袜| 色婷婷香蕉在线一区二区| 五月花丁香婷婷| gogo久久日韩裸体艺术| 亚洲欧洲美洲在线综合| 国产精品视频看看| 亚洲激情午夜| 国产精品女主播视频| www.av网站| 久久久99久久| 日韩a级黄色片| 成人黄色免费短视频| 91精品国产高清一区二区三区| 欧美极品jizzhd欧美仙踪林| 国产亚洲一区| 欧美日韩国产成人| 国产精品成人久久久| 国产99久久久精品| 日韩电影在线播放| 久草在线新免费首页资源站| 在线观看三级视频欧美| 青草青青在线视频 | 91系列在线播放| 头脑特工队2在线播放| 丰满少妇久久久久久久| 欧美色图亚洲自拍| 毛片网站在线看| 欧美三级在线看| 麻豆精品国产传媒av| 视频在线不卡免费观看| 欧美一二三视频| 99国产精品欲| 国产精品乱码一区二区三区软件| 极品美女扒开粉嫩小泬| 日韩精品亚洲专区在线观看| 中文字幕日韩视频| 国产剧情在线视频| 成人精品电影在线观看| 中国老女人av| 99久久er| 亚洲人精选亚洲人成在线| 18精品爽视频在线观看| 黄色小说综合网站| 五月天久久狠狠| 在线视频cao| 亚洲国产精品小视频| 91插插插插插插| 紧缚奴在线一区二区三区| 无遮挡亚洲一区| 澳门av一区二区三区| 亚洲欧洲xxxx| 亚洲视频 欧美视频| av不卡在线播放| 国产精品视频网站在线观看| 免费观看性欧美大片无片| 日韩在线免费av| 伊人免费在线观看高清版| 国产午夜精品久久| 久久九九国产视频| 国产成人一区| 国产精品扒开腿做爽爽爽视频 | 在线免费观看一区二区| 日本一区二区视频在线观看| 日韩欧美黄色大片| 欧洲三级视频| 国产伦精品免费视频| jizz在线观看中文| 欧美日韩国产精品自在自线| 女人裸体性做爰全过| 久草热8精品视频在线观看| 亚洲欧洲免费无码| 成人三级网址| 91精品国产综合久久久久久| 69夜色精品国产69乱| 亚洲精品激情| 精品无人区一区二区三区| 国产精品yjizz视频网| 日韩av最新在线观看| 国产精品一区二区三区四| 美日韩一区二区三区| 亚洲高清乱码| 图片一区二区| 久久电影一区二区| 丰满人妻一区二区| 婷婷激情综合网| 成年人免费观看视频网站 | 日本国产中文字幕| 欧美尿孔扩张虐视频| xxxxx91麻豆| 国产精品一级视频| 亚洲愉拍自拍另类高清精品| 无码成人精品区在线观看| 国产欧美精品久久| 日本一区二区三区四区高清视频 | 久久99国产精品免费| 欧美日韩视频免费在线观看| 日韩精品一区二区三区中文在线 | 亚洲天堂第一区| 国产精品x8x8一区二区| 欧美一性一乱一交一视频| av在线二区| 欧美变态凌虐bdsm| 欧美成人一区二区三区四区| 亚洲乱码国产乱码精品精98午夜 | 丝袜+亚洲+另类+欧美+变态| 色婷婷精品大视频在线蜜桃视频| 日韩一区二区三区四区视频| 国产成人无遮挡在线视频| 欧美成人xxxxx| 一区二区三区国产好| 91国产美女视频| 91精彩视频在线观看| 精品日韩欧美在线| 奴色虐av一区二区三区| 久久伊人中文字幕| 亚洲小视频网站| 在线亚洲激情| 日韩最新中文字幕| 在线视频亚洲专区| 91国产在线免费观看| 日韩欧美另类一区二区| 欧美肥婆姓交大片| 亚洲av无码一区二区乱子伦| 欧美视频精品一区| 国产高潮国产高潮久久久91| 久久免费看少妇高潮| 日批视频免费看| 久久69国产一区二区蜜臀| 欧美成人xxxxx| 伊人成人在线| www.69av| 91影院成人| 日本一区二区精品| 日韩成人一级| 成人综合av网| 91麻豆精品国产综合久久久 | 日韩在线观看免费高清完整版| 天天射,天天干| 日韩美女一区二区三区四区| 中文天堂在线视频| 色综合久久中文综合久久97| 久久精品这里有| 亚洲精品欧美激情| 在线观看黄网址| 欧美国产日韩亚洲一区| 妞干网在线视频观看| 91精品国产91久久综合| 无遮挡亚洲一区| 精品久久久亚洲| 久久99九九| 久久久久高潮毛片免费全部播放| 亚洲最大成人免费视频| 成人在线视频区| 成人久久一区二区| 欧美亚洲二区| 国产日韩欧美在线观看| 欧美日韩视频免费看| 国产日韩欧美电影在线观看| 草民电影神马电影一区二区| 国产精品露脸av在线| 欧美国产日韩电影| 国产精品入口福利| 成人在线不卡| 国产一区二区在线免费| 香蕉久久久久久| 亚洲一区亚洲二区亚洲三区| 欧美黄色一级| 99在线观看视频网站| 在线精品自拍| 国产主播一区二区三区四区| 天海翼亚洲一区二区三区| 久久久久久久久久久一区 | 99热这里有精品| 91日本在线视频| 精品国产伦一区二区三区观看说明 | 久国内精品在线| 欧美1234区| 97视频人免费观看| 奇米777日韩| 国产欧美日韩免费| 精品国产亚洲一区二区三区大结局| 91免费视频网站| caoporn成人| 欧美日韩在线观看一区| 波多野结衣在线观看一区二区三区 | 一区二区乱子伦在线播放| 欧美日本一道本| 朝桐光av在线一区二区三区| 日韩av在线影院| 国产精品一区二区婷婷| 久久中文精品视频| www.色在线| 国产精品久久久久久久久免费 | 亚洲奶大毛多的老太婆| 五月天婷婷在线视频| 欧美成人免费观看| 手机在线观看av| 国产日韩在线观看av| 亚洲伊人影院| 日本不卡一区二区三区在线观看| 91欧美在线| 成人黄色av片| 精品写真视频在线观看| 免费看毛片的网站| 中文字幕一区在线| 日本一区二区网站| 欧美视频一区二区三区四区 | 国产亚洲精品久久久久久牛牛| 日本在线免费| 欧美有码在线观看视频| 97久久精品一区二区三区的观看方式| 国内精品**久久毛片app| 欧美日韩在线网站| 2018日日夜夜| 精品一区二区三区蜜桃| 90岁老太婆乱淫| 一区二区三区高清| 一级片视频网站| 日韩精品视频在线观看网址| caopo在线| 国产精品99久久久久久www| julia中文字幕一区二区99在线| 日本10禁啪啪无遮挡免费一区二区| 国产精品chinese| 中文字幕第80页| 97精品国产97久久久久久久久久久久 | 精品国产凹凸成av人网站| av资源在线观看免费高清| 91sao在线观看国产| 日韩视频一二区| 这里只有精品66| 丝袜亚洲精品中文字幕一区| 蜜臀av粉嫩av懂色av| 亚洲人成在线播放网站岛国| 久久久久精彩视频| 亚洲黄色有码视频| 欧美bbbxxxxx| 91手机在线观看| 91亚洲一区| 亚洲性图一区二区| 国产日韩欧美高清在线| 亚洲免费在线观看av| 精品国产电影一区二区| 中文字幕有码在线观看| 国产日韩欧美在线看| 日韩欧美精品一区| 搡女人真爽免费午夜网站| 久久久精品影视| 久久久成人免费视频| 日韩精品中文字幕久久臀| 大桥未久在线播放| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 在线观看一区二区精品视频| 牛牛澡牛牛爽一区二区| 国产69久久精品成人看| 欧美性生活一级片| 无码粉嫩虎白一线天在线观看 | 欧美另类高清zo欧美| 最近高清中文在线字幕在线观看| 国产福利精品在线| 日韩国产欧美一区二区| 91欧美视频在线| 中文字幕一区二区视频| 国产日韩在线观看一区| 欧美成人午夜影院| 伊人精品综合| 青草青青在线视频| www国产成人| 中文字幕天堂在线| 日韩视频在线免费| 国产高清亚洲| 波多野结衣av一区二区全免费观看| 国产精品资源在线观看| 国产精品23p| 日韩精品一区二区三区第95| a日韩av网址| 亚洲一区在线直播| 国产在线播放一区二区三区| 黄色一级视频免费| 日韩av综合中文字幕| 99久久伊人| 法国空姐在线观看免费| 成人在线综合网| 成人精品免费在线观看| 亚洲最大在线视频| 国产精一区二区| 人妻少妇精品无码专区二区| 2020国产精品久久精品美国| 亚洲手机在线观看| 精品自拍视频在线观看| 亚洲大片精品免费| 国产美女18xxxx免费视频| 亚洲一区二区不卡免费| 奇米影视888狠狠狠777不卡| 国产剧情久久久久久| 影音先锋中文字幕一区| 魔女鞋交玉足榨精调教| 欧美乱熟臀69xxxxxx| 91超碰在线| 亚洲成色最大综合在线| 国产成人av自拍| 一级黄色av片| 欧美国产日韩视频| 精品美女久久久| 亚洲丝袜在线观看| 日本大香伊一区二区三区| 1stkiss在线漫画| 欧美大香线蕉线伊人久久| 国产精品一品二品| 中文字幕手机在线视频| 精品视频9999| 日韩精品一区二区三区免费观影| 麻豆短视频在线观看| 欧美三级韩国三级日本三斤| 丁香影院在线| 一区二区视频国产|