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

瀏覽器的渲染原理簡介

系統(tǒng) 瀏覽器
《How Browsers Work》,這篇文章把瀏覽器的很多細(xì)節(jié)講得很細(xì),而且也被翻譯成了中文。 但是,這篇文章太長了,閱讀成本太大,不能一口氣讀完,而且似乎對(duì)工作沒什么幫助。本文主要是解決這兩個(gè)難題。

看到這個(gè)標(biāo)題大家一定會(huì)想到這篇神文《How Browsers Work》,這篇文章把瀏覽器的很多細(xì)節(jié)講得很細(xì),而且也被翻譯成了中文。為什么我還想寫一篇呢?因?yàn)閮蓚€(gè)原因,

1)這篇文章太長了,閱讀成本太大,不能一口氣讀完。

2)花了大力氣讀了這篇文章后可以了解很多,但似乎對(duì)工作沒什么幫助。

所以,我準(zhǔn)備寫下這篇文章來解決上述兩個(gè)問題。希望你能在上班途中,或是坐馬桶時(shí)就能讀完,并能從中學(xué)會(huì)一些能用在工作上的東西。

瀏覽器工作大流程

廢話少說,先來看個(gè)圖:

從上面這個(gè)圖中,我們可以看到那么幾個(gè)事:

 

1)瀏覽器會(huì)解析三個(gè)東西:

  • 一個(gè)是HTML/SVG/XHTML,事實(shí)上,Webkit有三個(gè)C++的類對(duì)應(yīng)這三類文檔。解析這三種文件會(huì)產(chǎn)生一個(gè)DOM Tree。
  • CSS,解析CSS會(huì)產(chǎn)生CSS規(guī)則樹。
  • Javascript,腳本,主要是通過DOM API和CSSOM API來操作DOM Tree和CSS Rule Tree.

2)解析完成后,瀏覽器引擎會(huì)通過DOM Tree 和 CSS Rule Tree 來構(gòu)造 Rendering Tree。注意:

  • Rendering Tree 渲染樹并不等同于DOM樹,因?yàn)橐恍┫馠eader或display:none的東西就沒必要放在渲染樹中了。
  • CSS 的 Rule Tree主要是為了完成匹配并把CSS Rule附加上Rendering Tree上的每個(gè)Element。也就是DOM結(jié)點(diǎn)。也就是所謂的Frame。
  • 然后,計(jì)算每個(gè)Frame(也就是每個(gè)Element)的位置,這又叫l(wèi)ayout和reflow過程。

3)最后通過調(diào)用操作系統(tǒng)Native GUI的API繪制。

DOM解析

HTML的DOM Tree解析如下:

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

上面這段HTML會(huì)解析成這樣:

下面是另一個(gè)有SVG標(biāo)簽的情況。

#p#

CSS解析

CSS的解析大概是下面這個(gè)樣子(下面主要說的是Gecko也就是Firefox的玩法),假設(shè)我們有下面的HTML文檔:

  1. <doc> 
  2. <title>A few quotes</title> 
  3. <para> 
  4.   Franklin said that <quote>"A penny saved is a penny earned."</quote> 
  5. </para> 
  6. <para> 
  7.   FDR said <quote>"We have nothing to fear but <span>fear itself.</span>"</quote> 
  8. </para> 
  9. </doc> 

于是DOM Tree是這個(gè)樣子:

然后我們的CSS文檔是這樣的:

  1. /* rule 1 */ doc { display: block; text-indent: 1em; } 
  2. /* rule 2 */ title { display: block; font-size: 3em; } 
  3. /* rule 3 */ para { display: block; } 
  4. /* rule 4 */ [class="emph"] { font-style: italic; } 

于是我們的CSS Rule Tree會(huì)是這個(gè)樣子:

注意,圖中的第4條規(guī)則出現(xiàn)了兩次,一次是獨(dú)立的,一次是在規(guī)則3的子結(jié)點(diǎn)。所以,我們可以知道,建立CSS Rule Tree是需要比照著DOM Tree來的。CSS匹配DOM Tree主要是從右到左解析CSS的Selector,好多人以為這個(gè)事會(huì)比較快,其實(shí)并不一定。關(guān)鍵還看我們的CSS的Selector怎么寫了。

注意:CSS匹配HTML元素是一個(gè)相當(dāng)復(fù)雜和有性能問題的事情。所以,你就會(huì)在N多地方看到很多人都告訴你,DOM樹要小,CSS盡量用id和class,千萬不要過渡層疊下去,……

通過這兩個(gè)樹,我們可以得到一個(gè)叫Style Context Tree,也就是下面這樣(把CSS Rule結(jié)點(diǎn)Attach到DOM Tree上):

所以,F(xiàn)irefox基本上來說是通過CSS 解析 生成 CSS Rule Tree,然后,通過比對(duì)DOM生成Style Context Tree,然后Firefox通過把Style Context Tree和其Render Tree(Frame Tree)關(guān)聯(lián)上,就完成了。注意:Render Tree會(huì)把一些不可見的結(jié)點(diǎn)去除掉。而Firefox中所謂的Frame就是一個(gè)DOM結(jié)點(diǎn),不要被其名字所迷惑了。

注:Webkit不像Firefox要用兩個(gè)樹來干這個(gè),Webkit也有Style對(duì)象,它直接把這個(gè)Style對(duì)象存在了相應(yīng)的DOM結(jié)點(diǎn)上了。#p#

渲染

渲染的流程基本上如下(黃色的四個(gè)步驟):

  1. 計(jì)算CSS樣式
  2. 構(gòu)建Render Tree
  3. Layout – 定位坐標(biāo)和大小,是否換行,各種position, overflow, z-index屬性 ……
  4. 正式開畫

注意:上圖流程中有很多連接線,這表示了Javascript動(dòng)態(tài)修改了DOM屬性或是CSS屬會(huì)導(dǎo)致重新Layout,有些改變不會(huì),就是那些指到天上的箭頭,比如,修改后的CSS rule沒有被匹配到,等。

這里重要要說兩個(gè)概念,一個(gè)是Reflow,另一個(gè)是Repaint。這兩個(gè)不是一回事。

  • Repaint——屏幕的一部分要重畫,比如某個(gè)CSS的背景色變了。但是元素的幾何尺寸沒有變。
  • Reflow——意味著元件的幾何尺寸變了,我們需要重新驗(yàn)證并計(jì)算Render Tree。是Render Tree的一部分或全部發(fā)生了變化。這就是Reflow,或是Layout。(HTML使用的是flow based layout,也就是流式布局,所以,如果某元件的幾何尺寸發(fā)生了變化,需要重新布局,也就叫reflow)reflow 會(huì)從<html>這個(gè)root frame開始遞歸往下,依次計(jì)算所有的結(jié)點(diǎn)幾何尺寸和位置,在reflow過程中,可能會(huì)增加一些frame,比如一個(gè)文本字符串必需被包裝起來。

下面是一個(gè)打開Wikipedia時(shí)的Layout/reflow的視頻(注:HTML在初始化的時(shí)候也會(huì)做一次reflow,叫intial reflow),你可以感受一下:

Reflow的成本比Repaint的成本高得多的多。DOM Tree里的每個(gè)結(jié)點(diǎn)都會(huì)有reflow方法,一個(gè)結(jié)點(diǎn)的reflow很有可能導(dǎo)致子結(jié)點(diǎn),甚至父點(diǎn)以及同級(jí)結(jié)點(diǎn)的reflow。在一些高性能的電腦上也許還沒什么,但是如果reflow發(fā)生在手機(jī)上,那么這個(gè)過程是非常痛苦和耗電的。

所以,下面這些動(dòng)作有很大可能會(huì)是成本比較高的。

  • 當(dāng)你增加、刪除、修改DOM結(jié)點(diǎn)時(shí),會(huì)導(dǎo)致Reflow或Repaint
  • 當(dāng)你移動(dòng)DOM的位置,或是搞個(gè)動(dòng)畫的時(shí)候。
  • 當(dāng)你修改CSS樣式的時(shí)候。
  • 當(dāng)你Resize窗口的時(shí)候(移動(dòng)端沒有這個(gè)問題),或是滾動(dòng)的時(shí)候。
  • 當(dāng)你修改網(wǎng)頁的默認(rèn)字體時(shí)。

注:display:none會(huì)觸發(fā)reflow,而visibility:hidden只會(huì)觸發(fā)repaint,因?yàn)闆]有發(fā)現(xiàn)位置變化。

多說兩句關(guān)于滾屏的事,通常來說,如果在滾屏的時(shí)候,我們的頁面上的所有的像素都會(huì)跟著滾動(dòng),那么性能上沒什么問題,因?yàn)槲覀兊娘@卡對(duì)于這種把全屏像素往上往下移的算法是很快。但是如果你有一個(gè)fixed的背景圖,或是有些Element不跟著滾動(dòng),有些Elment是動(dòng)畫,那么這個(gè)滾動(dòng)的動(dòng)作對(duì)于瀏覽器來說會(huì)是相當(dāng)相當(dāng)痛苦的一個(gè)過程。你可以看到很多這樣的網(wǎng)頁在滾動(dòng)的時(shí)候性能有多差。因?yàn)闈L屏也有可能會(huì)造成reflow。

基本上來說,reflow有如下的幾個(gè)原因:

  • Initial。網(wǎng)頁初始化的時(shí)候。
  • Incremental。一些Javascript在操作DOM Tree時(shí)。
  • Resize。其些元件的尺寸變了。
  • StyleChange。如果CSS的屬性發(fā)生變化了。
  • Dirty。幾個(gè)Incremental的reflow發(fā)生在同一個(gè)frame的子樹上。

好了,我們來看一個(gè)示例吧:

  1. var bstyle = document.body.style; // cache 
  2. bstyle.padding = "20px"; // reflow, repaint 
  3. bstyle.border = "10px solid red"; //  再一次的 reflow 和 repaint  
  4. bstyle.color = "blue"; // repaint 
  5. bstyle.backgroundColor = "#fad"; // repaint  
  6. bstyle.fontSize = "2em"; // reflow, repaint 
  7. // new DOM element - reflow, repaint 
  8. document.body.appendChild(document.createTextNode('dude!')); 

當(dāng)然,我們的瀏覽器是聰明的,它不會(huì)像上面那樣,你每改一次樣式,它就reflow或repaint一次。一般來說,瀏覽器會(huì)把這樣的操作積攢一批,然后做一次reflow,這又叫異步reflow或增量異步reflow。但是有些情況瀏覽器是不會(huì)這么做的,比如:resize窗口,改變了頁面默認(rèn)的字體,等。對(duì)于這些操作,瀏覽器會(huì)馬上進(jìn)行reflow。

但是有些時(shí)候,我們的腳本會(huì)阻止瀏覽器這么干,比如:如果我們請(qǐng)求下面的一些DOM值:

  1. offsetTop, offsetLeft, offsetWidth, offsetHeight
  2. scrollTop/Left/Width/Height
  3. clientTop/Left/Width/Height
  4. IE中的 getComputedStyle(), 或 currentStyle

因?yàn)椋绻覀兊某绦蛐枰@些值,那么瀏覽器需要返回最新的值,而這樣一樣會(huì)flush出去一些樣式的改變,從而造成頻繁的reflow/repaint。#p#

減少reflow/repaint

下面是一些Best Practices:

1)不要一條一條地修改DOM的樣式。與其這樣,還不如預(yù)先定義好css的class,然后修改DOM的className。

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

2)把DOM離線后修改。如:

  • 使用documentFragment 對(duì)象在內(nèi)存里操作DOM
  • 先把DOM給display:none(有一次reflow),然后你想怎么改就怎么改。比如修改100次,然后再把他顯示出來。
  • clone一個(gè)DOM結(jié)點(diǎn)到內(nèi)存里,然后想怎么改就怎么改,改完后,和在線的那個(gè)的交換一下。

3)不要把DOM結(jié)點(diǎn)的屬性值放在一個(gè)循環(huán)里當(dāng)成循環(huán)里的變量。不然這會(huì)導(dǎo)致大量地讀寫這個(gè)結(jié)點(diǎn)的屬性。

4)盡可能的修改層級(jí)比較低的DOM。當(dāng)然,改變層級(jí)比較底的DOM有可能會(huì)造成大面積的reflow,但是也可能影響范圍很小。

5)為動(dòng)畫的HTML元件使用fixed或absoult的position,那么修改他們的CSS是不會(huì)reflow的。

6)千萬不要使用table布局。因?yàn)榭赡芎苄〉囊粋€(gè)小改動(dòng)會(huì)造成整個(gè)table的重新布局。

In this manner, the user agent can begin to lay out the table once the entire first row has been received. Cells in subsequent rows do not affect column widths. Any cell that has content that overflows uses the ‘overflow’ property to determine whether to clip the overflow content.

Fixed layout, CSS 2.1 Specification

This algorithm may be inefficient since it requires the user agent to have access to all the content in the table before determining the final layout and may demand more than one pass.

Automatic layout, CSS 2.1 Specification

幾個(gè)工具和幾篇文章

有時(shí)候,你會(huì)也許會(huì)發(fā)現(xiàn)在IE下,你不知道你修改了什么東西,結(jié)果CPU一下子就上去了到100%,然后過了好幾秒鐘repaint/reflow才完成,這種事情以IE的年代時(shí)經(jīng)常發(fā)生。所以,我們需要一些工具幫我們看看我們的代碼里有沒有什么不合適的東西。

  • Chrome下,Google的SpeedTracer是個(gè)非常強(qiáng)悍的工作讓你看看你的瀏覽渲染的成本有多大。其實(shí)Safari和Chrome都可以使用開發(fā)者工具里的一個(gè)Timeline的東東。
  • IE下你可以用一個(gè)叫dynaTrace的IE擴(kuò)展。

最后,別忘了下面這幾篇提高瀏覽器性能的文章:

參考

責(zé)任編輯:黃丹 來源: coolshell.cn
相關(guān)推薦

2013-06-14 13:56:29

瀏覽器渲染原理

2020-11-06 15:20:45

瀏覽器前端架構(gòu)

2022-08-30 09:01:11

瀏覽器渲染前端

2013-11-18 14:42:53

瀏覽器渲染

2012-03-20 11:35:32

傲游手機(jī)瀏覽器

2017-03-08 08:31:48

瀏覽器渲染路徑

2013-11-20 10:47:57

瀏覽器渲染html

2017-03-12 10:15:18

瀏覽器DOM樹CSSOM樹

2013-11-20 13:04:41

css瀏覽器渲染

2013-11-20 13:47:43

瀏覽器渲染引擎

2018-01-19 14:39:53

瀏覽器頁面優(yōu)化

2017-10-09 13:39:26

瀏覽器渲染服務(wù)器

2019-01-03 13:09:58

瀏覽器緩存原理

2022-02-07 21:49:06

瀏覽器渲染chromium

2013-11-18 15:09:34

瀏覽器渲染速度

2021-04-19 11:40:15

瀏覽器路徑

2020-03-12 11:29:51

JavaScript瀏覽器語言

2015-02-28 09:39:24

Windows 10Spartan

2021-04-01 06:23:24

CSS33D3D Web 動(dòng)畫

2019-04-08 10:27:00

渲染瀏覽器DOM
點(diǎn)贊
收藏

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

日韩电影精品| 精品人妻一区二区三区三区四区| 偷拍视屏一区| 欧美综合一区二区三区| 中国成人在线视频| 人妻无码中文字幕| 免费人成在线不卡| 国内精品久久久久影院优| 国产成人av一区二区三区不卡| 992tv国产精品成人影院| 一区二区三区精密机械公司| 麻豆传媒一区| 国产特黄一级片| 亚洲欧美不卡| 欧美裸身视频免费观看| 成人乱码一区二区三区av| 欧美区一区二区| 色呦呦网站一区| 青青草免费在线视频观看| 欧美偷拍视频| 国产成人在线电影| 国产成人精品在线观看| 精品在线视频免费观看| 99久久夜色精品国产亚洲96 | 免费国产a级片| 欧美三级黄网| 国产亚洲短视频| 国语精品中文字幕| 国内精品偷拍视频| 蜜臀va亚洲va欧美va天堂| 5252色成人免费视频| 久久视频免费看| 91精品亚洲| 色妞欧美日韩在线| 我不卡一区二区| 欧美wwwwww| 亚洲国产精品一区二区三区| 手机av在线网站| 四虎地址8848精品| 欧美三区在线观看| 人妻内射一区二区在线视频| 超级白嫩亚洲国产第一| 亚洲综合另类小说| 精品视频在线观看一区二区| 黄色成人影院| 中文字幕在线视频一区| 水蜜桃一区二区三区| 欧美精品少妇| 国产亚洲综合性久久久影院| 蜜桃免费一区二区三区| 午夜福利理论片在线观看| 成人av网址在线| 国产aⅴ精品一区二区三区黄| 国产精品久久久久久久免费看| 蜜臀久久久99精品久久久久久| 国产精品99久久久久久久久久久久| 亚洲欧美综合另类| 国产精品亚洲产品| 日本精品视频在线观看| 日日夜夜操视频| 日产国产欧美视频一区精品| 国产精品高清在线| 亚洲中文一区二区三区| 精品一区二区三区在线观看国产| 国产欧美日韩免费| 国产尤物视频在线观看| 国产一区二区三区在线看麻豆| 成人福利视频在线观看| jlzzjlzz亚洲女人18| 国产成人精品免费| 国产伦精品一区二区三区高清版| 污视频网站免费观看| 91免费版在线| 午夜精品一区二区在线观看的| h视频在线观看免费| 亚洲欧洲精品一区二区三区| 久久综合亚洲精品| 色老头在线一区二区三区| 欧美在线免费观看亚洲| 天天综合成人网| 国产毛片久久久| 亚洲午夜精品久久久久久久久久久久| 成人18视频免费69| 韩国一区二区三区在线观看| 青青久久aⅴ北条麻妃| 中文字幕乱码一区二区| 国产黄色精品视频| 久久涩涩网站| 国产原厂视频在线观看| 午夜欧美大尺度福利影院在线看| 少妇性l交大片| 91国产精品| 亚洲精品国产欧美| 中文字幕91视频| 99日韩精品| 川上优av一区二区线观看| 少妇av一区二区| 国产精品久线在线观看| av免费看网址| 免费污视频在线一区| 日韩精品专区在线| 亚洲精品国产一区黑色丝袜| 欧美在线网站| 国产成人免费av电影| 亚洲第一页视频| 国产欧美1区2区3区| www插插插无码视频网站| 成人免费在线观看视频| 亚洲白虎美女被爆操| 成人一级黄色大片| 亚洲欧美日韩专区| 99精品国产高清一区二区| 成人影视在线播放| 亚洲一二三专区| 黄色手机在线视频| 亚洲裸色大胆大尺寸艺术写真| 欧美成人午夜剧场免费观看| 国产乱码在线观看| 97成人超碰视| 国产乱子伦精品无码专区| 台湾天天综合人成在线| 亚洲欧美日韩精品久久| 国产无套粉嫩白浆内谢| 国内精品久久久久影院一蜜桃| 欧美尤物一区| 国产激情视频在线看| 6080yy午夜一二三区久久| 波多野在线播放| 国产九九精品| 好吊妞www.84com只有这里才有精品| 欧美人xxx| 欧美亚洲丝袜传媒另类| 好吊视频在线观看| 羞羞答答国产精品www一本| 国产精品二区在线| 污视频在线看网站| 欧美videofree性高清杂交| 天堂网中文在线观看| 蜜乳av一区二区| 亚洲一区二区精品在线观看| 日韩成人亚洲| 亚洲热线99精品视频| 天堂中文在线网| 91亚洲精品乱码久久久久久蜜桃| 缅甸午夜性猛交xxxx| 国产精品美女在线观看直播| 欧美精品电影免费在线观看| 黑人精品一区二区| 亚洲国产综合在线| 中文字幕一区二区三区乱码不卡| 亚洲午夜视频| 国产在线一区二区三区播放| 9999精品成人免费毛片在线看 | 国产精品精品一区二区三区午夜版| 爽爽视频在线观看| 色婷婷狠狠综合| 欧美 日韩 国产 成人 在线观看| 视频一区二区中文字幕| 亚洲福利av| 亚洲精品三区| 欧美俄罗斯性视频| 天堂视频中文在线| 日本精品视频一区二区三区| 丁香激情五月少妇| 久久99最新地址| 成年丰满熟妇午夜免费视频| 97人人澡人人爽91综合色| 97精品国产aⅴ7777| 黄色在线免费观看大全| 欧美日韩在线观看一区二区| 国产一区二区三区在线视频观看| 欧美激情精品久久久六区热门| 精品国产精品三级精品av网址| 国产精品久久久久野外| 伊人久久久大香线蕉综合直播 | 亚洲日产国产精品| 国产精品推荐精品| 三上悠亚激情av一区二区三区| 一本色道久久综合狠狠躁篇的优点| 中文字幕网址在线| 亚洲欧美日韩国产手机在线| 性感美女一区二区三区| 久久高清免费观看| 在线国产99| 红杏视频成人| 国产精品久久久久久影视| 国产精品实拍| 日韩国产精品视频| 亚洲综合精品在线| 亚洲午夜激情网站| 欧美一区二区三区粗大| 国产精品亚洲专一区二区三区| 国产青青在线视频| 欧美成人激情| 国产一区二区三区无遮挡| 日韩一区二区三区免费| 欧美日韩国产二区| 成人资源www网在线最新版| 日韩欧美美女一区二区三区| 中文字幕黄色片| 亚洲精品高清在线| 一区二区三区伦理片| 国产.欧美.日韩| 亚洲人辣妹窥探嘘嘘| 亚洲国产一区二区三区高清 | 欧美黄色精品| 日本不卡免费新一二三区| 亚洲日日夜夜| 欧洲中文字幕国产精品| caopeng在线| 国产午夜精品全部视频在线播放| www.av网站| 欧美日韩成人在线| 欧美a视频在线观看| 亚洲一二三区在线观看| 国产亚洲精品久久久久久豆腐| 91丨九色丨国产丨porny| 激情成人在线观看| 亚洲欧美激情另类| 中文字幕欧美区| 男女一区二区三区| 国产激情视频一区二区在线观看 | 91免费国产在线| 亚洲av无一区二区三区久久| 免费视频最近日韩| www.欧美日本| 99亚洲精品| 国产精彩视频一区二区| 亚洲精品极品少妇16p| 亚洲成人网上| 免费一区二区| 久草精品电影| 欧美大奶一区二区| 国产精品18毛片一区二区| 国产精品成人**免费视频| 国产精品亚洲一区二区三区| 国产精品一区二区av影院萌芽| 97精品一区二区三区| 色呦呦呦在线观看| 欧美精品一二区| 超碰在线最新| 久久精品亚洲国产| 求av网址在线观看| 在线观看不卡av| 搞黄视频在线观看| 亚洲一区二区精品| 91se在线| 色悠悠久久久久| 无遮挡的视频在线观看| 视频在线观看一区二区| 日本韩国在线视频爽| 久久精品最新地址| 成视频免费观看在线看| 欧美精品亚州精品| 高清电影在线观看免费| 91av福利视频| 老太脱裤子让老头玩xxxxx| 久久夜色精品国产噜噜av小说| 成人自拍爱视频| 极品束缚调教一区二区网站 | 免费观看久久av| 欧美久久在线| 日产精品一区二区| 影音先锋男人的网站| 欧美黄污视频| aa在线观看视频| 日韩中文字幕麻豆| 中国黄色片一级| 国产成人免费高清| 亚洲色图14p| 国产欧美精品在线观看| 小向美奈子av| 亚洲国产精品久久久久婷婷884 | 欧美人xxxx| a级片免费观看| 精品99一区二区| 免费福利在线观看| 中文字幕一区电影| a视频在线播放| 97不卡在线视频| 视频精品导航| 3d精品h动漫啪啪一区二区 | 日本成人中文字幕| 亚洲精品一区二区三区婷婷月| 国产特黄一级片| 亚洲国产成人爱av在线播放| 精品亚洲综合| 久久久精品网站| 日韩理论视频| 国产一区红桃视频| 精品国产一区二区三区不卡蜜臂| 日韩国产美国| 欧美福利影院| 国产成人av影视| 国产精品自产自拍| 精品人妻互换一区二区三区| 中文字幕视频一区| 天码人妻一区二区三区在线看| 欧美日韩三级在线| 日韩一级中文字幕| 久久精品成人一区二区三区| 人人草在线视频| 91精品入口蜜桃| 在线观看免费视频高清游戏推荐| 久久久噜噜噜久久狠狠50岁| 亚洲综合在线一区二区| 久久久精品国产免费观看同学| 极品颜值美女露脸啪啪| 91九色最新地址| 色呦呦中文字幕| 久色乳综合思思在线视频| 婷婷激情一区| 国产精品免费一区二区| 91精品成人| 国产97色在线 | 日韩| www.爱久久.com| 久久久久久久久久久久国产| 欧美日韩亚洲丝袜制服| 欧美孕妇孕交xxⅹ孕妇交| 欧美激情一级二级| 国产精品视频一区二区三区综合| 欧美综合77777色婷婷| 亚洲欧洲日本mm| 午夜性福利视频| 最好看的中文字幕久久| 国模私拍一区二区| 日韩精品在线私人| sm久久捆绑调教精品一区| 亚洲一区二区三区视频播放| 日韩成人综合| www.日日操| 国产区在线观看成人精品| 久久久久久久久黄色| 精品呦交小u女在线| 国产精品论坛| 国产一区免费观看| 国产在线欧美| 蜜臀aⅴ国产精品久久久国产老师| 亚洲免费观看高清完整版在线| 一本一道人人妻人人妻αv| 国产午夜精品全部视频播放| 欧美色网在线| 日韩久久精品一区二区三区| 天堂av在线一区| 娇妻被老王脔到高潮失禁视频| 在线免费观看一区| www.黄在线观看| 国产三级精品网站| 91精品婷婷色在线观看| 18深夜在线观看免费视频| 亚洲日本丝袜连裤袜办公室| 国产麻豆免费观看| 久久69精品久久久久久国产越南| 日韩第一区第二区| 日韩精品一区二区三区四| 成人免费毛片app| 成人午夜视频精品一区| 国产丝袜一区视频在线观看| 亚洲深夜视频| 少妇精品久久久久久久久久| 欧美aaaaa成人免费观看视频| 免费看的黄色录像| 欧美一区日韩一区| a级大胆欧美人体大胆666| 国产美女在线精品免费观看| 亚洲综合社区| 久久精品国产一区二区电影| 亚洲制服国产| 国产精品久久久久久免费观看| 亚洲精品影视| 韩国三级hd中文字幕| 欧美浪妇xxxx高跟鞋交| av片在线观看| 开心色怡人综合网站| 麻豆成人免费电影| 久久久久久久黄色| 亚洲免费一级电影| 国产免费av国片精品草莓男男| 国产精品三级一区二区| 久久夜色精品国产噜噜av| 中文在线a天堂| 国产69精品久久久| 国产欧美一区二区精品久久久| 欧美午夜精品理论片| 亚洲国产wwwccc36天堂| 1024国产在线| 国产精品白丝jk白祙| 欧美aaa在线| 日韩成人免费在线观看| 伊人亚洲福利一区二区三区| 日韩一区二区三区色| 欧美两根一起进3p做受视频| 亚洲天堂2014| 欧美日韩国产综合视频| 96国产粉嫩美女| 快she精品国产999| 青青操视频在线播放| 一区二区三区动漫| 久久中文字幕导航| 亚洲a级黄色片|