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

使用Chrome Timeline來(lái)優(yōu)化頁(yè)面性能

開(kāi)發(fā) 開(kāi)發(fā)工具
有時(shí)候,我們就是會(huì)不由自主地寫出一些低效的代碼,嚴(yán)重影響頁(yè)面運(yùn)行的效率。或者我們接手的項(xiàng)目中,前人寫出來(lái)的代碼千奇百怪,比如為了一個(gè) Canvas 特效需要同時(shí)繪制 600 個(gè)三角形,又比如 Coding.net 的任務(wù)中心需要同時(shí) watch 上萬(wàn)個(gè)變量的變化等等。那么,如果我們遇到了一個(gè)比較低效的頁(yè)面,應(yīng)該如何去優(yōu)化它呢?

有時(shí)候,我們就是會(huì)不由自主地寫出一些低效的代碼,嚴(yán)重影響頁(yè)面運(yùn)行的效率。或者我們接手的項(xiàng)目中,前人寫出來(lái)的代碼千奇百怪,比如為了一個(gè) Canvas 特效需要同時(shí)繪制 600 個(gè)三角形,又比如 Coding.net 的任務(wù)中心需要同時(shí) watch 上萬(wàn)個(gè)變量的變化等等。那么,如果我們遇到了一個(gè)比較低效的頁(yè)面,應(yīng)該如何去優(yōu)化它呢?

優(yōu)化前的準(zhǔn)備:知己知彼

在一切開(kāi)始之前,我們先打開(kāi) F12 面板,熟悉一下我們接下來(lái)要用到的工具:Timeline:

 

嗯沒(méi)錯(cuò)就是它。下面逐一介紹一下吧。區(qū)域 1 是一個(gè)縮略圖,可以看到除了時(shí)間軸以外被上下分成了四塊,分別代表 FPS、CPU 時(shí)間、網(wǎng)絡(luò)通信時(shí)間、堆棧占用;這個(gè)縮略圖可以橫向縮放,白色區(qū)域是下面可以看到的時(shí)間段(灰色當(dāng)然是不可見(jiàn)的啦)。區(qū)域 2 可以看一些交互事件,例如你滾動(dòng)了一下頁(yè)面,那么這里會(huì)出現(xiàn)一個(gè) scroll 的線段,線段覆蓋的范圍就是滾動(dòng)經(jīng)過(guò)的時(shí)間。區(qū)域 3 則是具體的事件列表了。

一開(kāi)始沒(méi)有記錄的時(shí)候,所有的區(qū)域都是空的。開(kāi)始統(tǒng)計(jì)和結(jié)束統(tǒng)計(jì)都很簡(jiǎn)單,左上角那坨黑色的圓圈就是。它右邊那個(gè)長(zhǎng)得像“禁止通行”的按鈕是用來(lái)清除現(xiàn)有記錄的。當(dāng)有數(shù)據(jù)的時(shí)候,我們把鼠標(biāo)滾輪向上滾,可以看到區(qū)域被放大了:

 

短短的時(shí)間里,瀏覽器做了這么多事情。對(duì)于一般的屏幕,原則上來(lái)說(shuō)一秒要往屏幕上繪制 60 幀,所以理論上講我們一幀內(nèi)的計(jì)算時(shí)間不能超過(guò) 16 毫秒,然而瀏覽器除了執(zhí)行我們的代碼以外,還要干點(diǎn)別的(例如計(jì)算 CSS,播放音頻……),所以其實(shí)我們能用的只有 10~12 毫秒左右。

差不多熟悉操作了,那么就來(lái)一下實(shí)戰(zhàn)吧!假如有一天,你接手了這樣一段代碼:

  1. <!-- 一段小動(dòng)畫:點(diǎn)擊按鈕之后會(huì)有一個(gè)爆炸的粒子效果 --> 
  2. <!DOCTYPE html> 
  3. <html> 
  4. <head> 
  5.     <meta charset="utf-8"
  6.     <title>Test</title> 
  7.     <style> 
  8.         .main { 
  9.             position: relative
  10.             width: 500px; 
  11.             height: 500px; 
  12.             background: #000; 
  13.             overflow: hidden; 
  14.         } 
  15.         .circle { 
  16.             position: absolute
  17.             border-radius: 50%; 
  18.             border: 1px solid #FFF; 
  19.             width: 8px; 
  20.             height: 8px; 
  21.         } 
  22.     </style> 
  23. </head> 
  24. <body> 
  25.     <div class="main"></div> 
  26.     <hr> 
  27.     <button onclick="showAnimation()">點(diǎn)我</button> 
  28.     <script src="jquery.min.js"></script> 
  29.     <script src="animation.js"></script> 
  30. </body> 
  31. </html> 
  1. // animation.js  
  2.   
  3. // 粒子總數(shù)  
  4. var COUNT = 500;  
  5. // 重力  
  6. var G = -0.1;  
  7. // 摩擦力  
  8. var F = -0.04;  
  9.   
  10. function init() {  
  11.     for (var i = 0; i < COUNT; i++) {  
  12.         var d = Math.random() * 2 * Math.PI;  
  13.         var v = Math.random() * 5;  
  14.         var circle = $('<div id="circle-' + i + '" class="circle" data-x="250" data-y="250" data-d="' + d + '" data-v="' + v + '"></div>');  
  15.         circle.appendTo($('.main'));  
  16.     }  
  17. }  
  18.   
  19. function updateCircle() {  
  20.     for (var i = 0; i < COUNT; i++) {  
  21.         var x = parseFloat($('#circle-' + i).attr('data-x'));  
  22.         var y = parseFloat($('#circle-' + i).attr('data-y'));  
  23.         var d = parseFloat($('#circle-' + i).attr('data-d'));  
  24.         var v = parseFloat($('#circle-' + i).attr('data-v'));  
  25.         var vx = v * Math.cos(d);  
  26.         var vy = v * Math.sin(d);  
  27.         if (Math.abs(vx) < 1e-9) vx = 0;  
  28.         // 速度分量改變  
  29.         vx += F * Math.cos(d);  
  30.         vy += F * Math.sin(d) + G;  
  31.         // 計(jì)算新速度  
  32.         v = Math.sqrt(vx * vx + vy * vy);  
  33.         if (vy > 0) d = Math.acos(vx / v);  
  34.         else d = -Math.acos(vx / v);  
  35.         // 位移分量改變  
  36.         x += vx;  
  37.         y += vy;  
  38.         $('#circle-' + i).attr('data-x', x);  
  39.         $('#circle-' + i).attr('data-y', y);  
  40.         $('#circle-' + i).attr('data-d', d);  
  41.         $('#circle-' + i).attr('data-v', v);  
  42.         $('#circle-' + i).css({'top': 400 - y, 'left': x});  
  43.     }  
  44. }  
  45.   
  46. var interval = null;  
  47.   
  48. function showAnimation() {  
  49.     if (interval) clearInterval(interval);  
  50.     $('.main').html('');  
  51.     init();  
  52.     interval = setInterval(updateCircle, 1000 / 60);  
  53. }  

效果如下(右上角的 FPS 計(jì)數(shù)器是 Chrome 調(diào)試工具自帶的):

 

只有 10 FPS……10 FPS……坑爹呢這是!

 

好吧,打開(kāi) Timeline,按下記錄按鈕,點(diǎn)一下頁(yè)面中的“點(diǎn)我”,稍微過(guò)一會(huì)兒停止記錄,就會(huì)得到一些數(shù)據(jù)。放大一些,對(duì) jQuery 比較熟悉的同學(xué)可以看出來(lái),這些大部分是 jQuery 的函數(shù)。我們點(diǎn)一下那個(gè) updateCircle 的區(qū)塊,然后看下面:

 

這里告訴我們,這個(gè)函數(shù)運(yùn)行了多久、函數(shù)代碼在哪兒。我們點(diǎn)一下那個(gè)鏈接,于是就跳到了 Source 頁(yè):

 

是不是很震撼,之前這個(gè)頁(yè)面只是用來(lái) Debug 的,沒(méi)想到現(xiàn)在居然帶了精確到行的運(yùn)行時(shí)間統(tǒng)計(jì)。當(dāng)然,這個(gè)時(shí)間是當(dāng)前這一行在“剛才我們點(diǎn)擊的區(qū)塊對(duì)應(yīng)的執(zhí)行時(shí)間段”中運(yùn)行的時(shí)間。所以我們就拿最慢的幾句話來(lái)下手吧!

優(yōu)化一:減少 DOM 操作

看到這幾行代碼,***反應(yīng)是:mdzz。本來(lái) DOM 操作就慢,還要在字符串和 float 之間轉(zhuǎn)來(lái)轉(zhuǎn)去。果斷改掉!于是用一個(gè)單獨(dú)的數(shù)組來(lái)存 x、y、d、v 這些屬性。

  1. var objects = []; 
  2. // 在 init 函數(shù)中 
  3. objects.push({ 
  4.     x: 250, 
  5.     y: 250, 
  6.     d: d, 
  7.     v: v 
  8. }); 
  9. // 在 updateCircle 函數(shù)中 
  10. var x = objects[i].x; 
  11. var y = objects[i].y; 
  12. var d = objects[i].d; 
  13. var v = objects[i].v; 
  14. // …. 
  15. objects[i].x = x; 
  16. objects[i].y = y; 
  17. objects[i].d = d; 
  18. objects[i].v = v; 

 

效果顯著!我們?cè)賮?lái)看一下精確到行的數(shù)據(jù):

 

優(yōu)化二:減少不必要的運(yùn)算

所以最耗時(shí)的那句話已經(jīng)變成了計(jì)算 vx 和 vy,畢竟三角函數(shù)算法比較復(fù)雜嘛,可以理解。至于后面的三角函數(shù)為什么那么快,我猜可能是 Chrome 的 V8 引擎將其緩存了(這句話不保證正確性)。然而不知道大家有沒(méi)有發(fā)現(xiàn),其實(shí)計(jì)算 d 完全沒(méi)必要!我們只需要存 vx 和 vy 即可,不需要存 v 和 d!

  1. // init 
  2. var vx = v * Math.cos(d); 
  3. var vy = v * Math.sin(d); 
  4. objects.push({ 
  5.     x: 250, 
  6.     y: 250, 
  7.     vx: vx, 
  8.     vy: vy 
  9. }); 
  10. // updateCircle 
  11. var vx = objects[i].vx; 
  12. var vy = objects[i].vy; 
  13. // 計(jì)算新速度 
  14. var v = Math.sqrt(vx * vx + vy * vy); 
  15. if (Math.abs(vx) < 1e-9) vx = 0; 
  16. // 速度分量改變 
  17. vx += F * vx / v; 
  18. vy += F * vy / v + G; 
  19. // …. 
  20. objects[i].vx = vx; 
  21. objects[i].vy = vy; 

 

只有加減乘除和開(kāi)平方運(yùn)算,每次比原來(lái)的時(shí)間又少了兩毫秒。從流暢的角度來(lái)說(shuō)其實(shí)已經(jīng)可以滿幀運(yùn)行了,然而為什么我還是覺(jué)得偶爾會(huì)有點(diǎn)卡呢?

優(yōu)化三:替換 setInterval

既然偶爾會(huì)掉幀,那么就看看是怎么掉的唄~原則上來(lái)說(shuō),在每一次瀏覽器進(jìn)行繪制之前,Timeline 里面應(yīng)該有一個(gè)叫 Paint 的事件,就像這樣:

 

看到這些綠色的東西了沒(méi)?就是它們!看上面的時(shí)間軸,雖然代碼中 setInterval 的長(zhǎng)度是 1000/16 毫秒,但是其實(shí)根本不能保證!所以我們需要使用 requestAnimationFrame 來(lái)代替它。這是瀏覽器自帶的專門為動(dòng)畫服務(wù)的函數(shù),瀏覽器會(huì)自動(dòng)優(yōu)化這個(gè)函數(shù)的調(diào)用時(shí)機(jī)。并且如果頁(yè)面被隱藏,瀏覽器還會(huì)自動(dòng)暫停調(diào)用,有效地減少了 CPU 的開(kāi)銷。

  1. // 在 updateCircle ***加一句 
  2. requestAnimationFrame(updateCircle); 
  3. // 去掉全部跟 setInterval 有關(guān)的句子,把 showAnimation ***一句直接改成這個(gè) 
  4. updateCircle(); 

 

我們至少可以保證,我們每算一次,屏幕上就會(huì)顯示一次,因此不會(huì)掉幀(前提是每計(jì)算一次的時(shí)間小于 12ms)。但是雖然計(jì)算時(shí)間少了,瀏覽器重計(jì)算樣式、繪制圖像的時(shí)間可是一點(diǎn)都沒(méi)變。能不能再做優(yōu)化呢?

優(yōu)化四:使用硬件加速、避免反復(fù)查找元素

如果我們用 transform 來(lái)代替 left 和 top 來(lái)對(duì)元素進(jìn)行定位,那么瀏覽器會(huì)為這個(gè)元素單***立一個(gè)合成層,專門使用 GPU 進(jìn)行渲染,這樣可以把重計(jì)算的代價(jià)降到***。有興趣的同學(xué)可以研究一下“CSS 硬件加速”的機(jī)制。同時(shí),我們可以緩存一下 jQuery 的元素(或者 DOM 元素),這樣不用每次都重新查找,也能稍微提高一點(diǎn)效率。如果把元素緩存在 objects 數(shù)組中,那么連 id 都不用寫了!

  1. // init 
  2. var circle = $('<div class="circle"></div>'); 
  3. objects.push({ 
  4.     x: 250, 
  5.     y: 250, 
  6.     vx: vx, 
  7.     vy: vy, 
  8.     // 其實(shí)可以只存 DOM,不存 jQuery 對(duì)象 
  9.     circle: circle[0] 
  10. }); 
  11. // updateCircle 里面 for 循環(huán)的***一句話替換掉 
  12. objects[i].circle.style.transform = 'translate(' + x + 'px, ' + (400 - y) + 'px)' 

 

看起來(lái)是不是很爽了?

其實(shí),優(yōu)化是無(wú)止境的,例如我在 init 函數(shù)中完全可以不用 jQuery,改用 createDocumentFragment 來(lái)拼接元素,這樣初始化的時(shí)間就可以急劇縮短;調(diào)換 updateCircle 中的幾個(gè)語(yǔ)句的順序,在 V8 引擎下效率可能會(huì)有一定的提升;甚至還可以結(jié)合 Profile 面板來(lái)分析內(nèi)存占用,查看瀏覽器繪圖的細(xì)節(jié)……然而個(gè)人感覺(jué)并用不到這么極限的優(yōu)化。對(duì)于一個(gè)項(xiàng)目來(lái)說(shuō),如果單純?yōu)榱藘?yōu)化而寫一些奇怪的代碼,是很不合算的。

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2011-05-11 17:26:17

Minify

2021-05-11 10:03:06

性能優(yōu)化工具Performance

2009-09-08 09:45:23

App Engine性

2017-05-10 14:47:37

Headless Ch頁(yè)面 Docker

2017-01-19 19:07:28

iOS進(jìn)階性能優(yōu)化

2024-02-02 15:21:08

工具頁(yè)面性能

2019-03-14 15:38:19

ReactJavascript前端

2021-05-13 09:43:03

Flutter研發(fā)模式

2020-12-21 08:32:07

內(nèi)存性能優(yōu)化

2010-08-18 09:26:56

DB2性能調(diào)優(yōu)

2017-04-25 16:20:10

頁(yè)面優(yōu)化滾動(dòng)優(yōu)化

2022-04-27 10:53:34

web優(yōu)化性能

2011-08-24 17:23:10

2017-11-27 14:58:01

MySQL高并發(fā)優(yōu)化性能調(diào)優(yōu)

2023-12-18 09:08:40

IstioSidecar代理服務(wù)

2017-12-14 14:32:30

.Net內(nèi)存代碼

2009-03-16 15:07:20

JSP分頁(yè)window.openJSP表單

2022-06-06 22:36:55

渲染性能CSS

2017-01-19 15:27:24

Android性能優(yōu)化Lint

2022-07-21 18:51:13

性能優(yōu)化
點(diǎn)贊
收藏

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

亚洲精品视频免费观看| 香蕉久久夜色精品| 欧美mv和日韩mv的网站| 黄色一级在线视频| av免费观看一区二区| 国产综合色在线| 91国语精品自产拍在线观看性色 | 国产精品xxx在线观看| 欧美日韩在线免费| 亚洲综合欧美日韩| 黄色一级大片在线免费看国产一| 久久精品三级| 久99九色视频在线观看| 精品人伦一区二区三电影| 91国产一区| 欧美性猛交xxxx黑人| 熟妇熟女乱妇乱女网站| 手机亚洲第一页| 国产麻豆视频精品| 国产成人综合久久| 免费观看一级视频| 欧美激情黄色片| 日韩精品有码在线观看| 深夜做爰性大片蜜桃| 深夜成人福利| 婷婷丁香久久五月婷婷| 中文字幕一区二区三区乱码| 午夜性色福利影院| 国产福利91精品一区二区三区| 国产成人在线一区| 成年人免费看毛片| 艳女tv在线观看国产一区| 亚洲视频在线观看视频| 黄色片视频免费观看| 日韩精品免费视频一区二区三区 | 天天综合网 天天综合色| 懂色av一区二区三区四区五区| 欧美3p视频在线观看| 99在线精品一区二区三区| 亚洲自拍另类欧美丝袜| 亚洲一区二区人妻| 免费在线看成人av| 欧美在线中文字幕| 黄网在线观看视频| 日韩亚洲国产精品| 国模精品视频一区二区三区| 日本天堂中文字幕| 中文字幕人成人乱码| 久久精品国产一区二区三区| 欧美色图17p| 日韩av片子| 伊人伊成久久人综合网站| 中国美女乱淫免费看视频| 农村少妇一区二区三区四区五区 | 欧洲av在线精品| 苍井空浴缸大战猛男120分钟| cao在线视频| 欧美日韩亚洲一区二| 少妇高潮喷水在线观看| 三级中文字幕在线观看| 狠狠色狠狠色综合日日五| 国产中文字幕视频在线观看| 亚洲妇女成熟| 91激情五月电影| 手机看片福利日韩| 激情亚洲小说| 欧美一区欧美二区| 国产一精品一aⅴ一免费| 国产精品黄网站| 亚洲精品午夜精品| 日本少妇xxxxx| 久久国产电影| 欧美精品在线第一页| 久久精品99国产精| 欧美亚洲视频| 国产精品99免视看9| 国产精品爽爽久久| 粉嫩嫩av羞羞动漫久久久| 亚洲六月丁香色婷婷综合久久| 亚洲91精品在线观看| 性无码专区无码| 日韩国产一区二| 成人做爽爽免费视频| 黄色片一区二区三区| www亚洲一区| 一区二区免费在线观看| 黄色成人影院| 精品国产乱码久久久久久天美 | 久久天天躁狠狠躁老女人| 成熟的女同志hd| 一本不卡影院| 国产噜噜噜噜久久久久久久久| 国产日产亚洲系列最新| 成a人片国产精品| 日本高清不卡一区二区三| 黄色网在线播放| 精品久久久久久亚洲国产300 | 草久久免费视频| 奇米777欧美一区二区| 99精品在线直播| 撸视在线观看免费视频| 亚洲欧美电影院| 国产男女在线观看| 国产精品3区| 国产丝袜视频一区| 欧洲猛交xxxx乱大交3| 久久精品伊人| 国产伦精品一区二区| 1024免费在线视频| 欧美视频在线观看免费网址| 日本精品一区在线| 免费电影一区二区三区| 久久久在线观看| 中文文字幕一区二区三三| 成人激情免费电影网址| 五月天男人天堂| 日韩欧美另类一区二区| 精品国产乱码久久| 成人自拍小视频| 日韩电影一区二区三区四区| 国产精品日韩高清| av在线免费网址| 欧美在线色视频| a视频免费观看| 一区二区国产在线| 国产欧美在线视频| 成人动漫在线免费观看| 欧美日韩视频免费播放| 韩国一区二区三区四区| 国产精品成人一区二区不卡| 日本久久91av| 天堂中文在线资源| 亚洲五码中文字幕| 亚洲成人av免费观看| 91亚洲国产高清| 国产精品欧美日韩久久| 你懂的在线播放| 懂色aⅴ精品一区二区三区蜜月 | 国产露脸91国语对白| 欧美高清在线精品一区| 欧美少妇性生活视频| 图片婷婷一区| 欧美专区在线播放| 日韩av视屏| 欧美性极品少妇精品网站| 亚洲男女在线观看| 亚洲理论在线| 精品国产乱码久久久久久108| 男女免费观看在线爽爽爽视频| 日韩一区二区中文字幕| 国产极品国产极品| 国产美女精品一区二区三区| 日本xxxxx18| 日韩三级不卡| 欧美激情videos| 亚洲精品一区二区三区四区| 亚洲一区二区三区四区不卡| 中国黄色片视频| 国产欧美丝祙| 欧美精品久久久| avav成人| 日韩一区二区三区在线播放| 国产精品伦一区二区三区| 亚洲三级电影全部在线观看高清| 国产精品熟女一区二区不卡| 亚洲清纯自拍| 欧美日韩精品一区| 精品网站在线| 久久综合免费视频| 人人妻人人玩人人澡人人爽| 色呦呦网站一区| 2017亚洲天堂| www日本高清视频| eeuss影院一区二区三区| 97超碰青青草| 欧美精选一区二区三区| 国产中文字幕亚洲| 在线观看中文字幕的网站| 亚洲白拍色综合图区| 亚洲s码欧洲m码国产av| 中文字幕制服丝袜成人av| 国模大尺度视频| 亚洲欧美日韩国产综合精品二区 | 99超碰麻豆| 色戒汤唯在线观看| 国产一区二区三区在线看| 91久久久久久久久久久久| 亚洲一线二线三线视频| 中文字幕第20页| 国产成人综合亚洲91猫咪| 日日橹狠狠爱欧美超碰| 99久久99热这里只有精品 | 天天干视频在线观看| 色88888久久久久久影院按摩 | 中文字幕人成人乱码| 久久艳妇乳肉豪妇荡乳av| 亚洲免费看片| 欧美壮男野外gaytube| www在线视频| 亚洲欧美制服中文字幕| 性生交大片免费看女人按摩| 一本大道久久精品懂色aⅴ| 欧洲第一无人区观看| 国产丝袜美腿一区二区三区| 国产69视频在线观看| 久久超碰97人人做人人爱| 欧美 日韩 激情| 亚洲精品国产偷自在线观看| 欧美日产一区二区三区在线观看| 午夜久久av| 国产综合久久久久久| 欧美momandson| 欧美激情伊人电影| 麻豆影院在线| 亚洲欧洲av一区二区| 国产小视频一区| 在线电影院国产精品| 激情视频网站在线观看| 亚洲国产aⅴ成人精品无吗| 国产美女久久久久久| 国产亚洲精久久久久久| 亚洲永久无码7777kkk| 国产高清在线精品| 奇米视频888| 免费在线观看成人| 精品久久久噜噜噜噜久久图片| 亚洲福利电影| 国产高清免费在线| 久久大综合网| 亚洲高清在线播放| 国产精选一区| 欧美高清视频一区二区三区在线观看| 超碰成人在线免费| 粉嫩av四季av绯色av第一区| 精品国产亚洲一区二区三区在线| 国产精品一区电影| 国产91在线精品| 国产精品久久久精品| 中韩乱幕日产无线码一区| 国产aaa精品| 欧美中文字幕精在线不卡| 人妖精品videosex性欧美| 久草在线中文最新视频| 91精品国产91久久久久久吃药 | 91麻豆蜜桃| 精品一区视频| 2020国产精品久久精品不卡| 欧美1区2区3| 999国内精品视频在线| 一区二区三区欧洲区| 成人欧美一区二区三区在线观看| 亚洲网一区二区三区| 国产精品一区二区三区精品| 国产精品黄网站| 欧美lavv| japanese国产精品| 亚洲一区高清| 综合久久精品| 日韩亚洲欧美视频| 国产欧美短视频| 国产 porn| 国产在线精品一区在线观看麻豆| 亚洲国产日韩在线一区| 成人午夜私人影院| 欧美深性狂猛ⅹxxx深喉 | 国产在线精品一区二区| 亚洲av无一区二区三区久久| 成人夜色视频网站在线观看| 精品一区二区视频在线观看| 久久久久国产成人精品亚洲午夜| 免费看裸体网站| 亚洲视频图片小说| 久久久久久久久久综合| 欧美日韩在线第一页| 中文字幕日本人妻久久久免费| 欧美一卡二卡在线| 欧美一区二区三区激情| 亚洲少妇激情视频| 黄a在线观看| 91精品国产色综合| 少妇精品视频一区二区免费看| 亚洲欧美怡红院| 免费a v网站| 欧美国产日韩亚洲一区| 天天干中文字幕| 日韩欧中文字幕| 国产精品乱码一区二区| 亚洲精品久久久久久久久久久久| 国产毛片av在线| 九九九久久国产免费| 成人线上视频| 亚洲永久在线观看| 免费一区二区| 91精品一区二区三区四区| 午夜亚洲性色视频| 午夜xxxxx| 国产网站一区二区三区| 男女免费视频网站| 欧洲在线/亚洲| 人妻va精品va欧美va| 最新亚洲国产精品| 国产夫妻在线| 91久久综合亚洲鲁鲁五月天| 美女久久久久| 成人免费观看在线| 韩国av一区二区三区四区| 久久久久亚洲av无码专区桃色| 亚洲六月丁香色婷婷综合久久 | 日韩av一级片| 亚洲精品国产成人av在线| 中文字幕一区免费在线观看| 久久国产视频精品| 日韩一级大片在线观看| 尤物在线视频| 日本欧美精品在线| 风间由美一区二区av101| av电影一区二区三区| 日韩二区三区四区| 久久久久亚洲av无码专区桃色| 亚洲第一搞黄网站| 国产日韩欧美中文字幕| 在线播放国产一区中文字幕剧情欧美| 白浆在线视频| 高清视频一区二区三区| 永久亚洲成a人片777777| 在线观看免费的av| 国产欧美日韩激情| 69国产精品视频免费观看| 亚洲国产精品嫩草影院久久| 三级福利片在线观看| 亚洲一区中文字幕在线观看| 日韩一区二区中文| 香港日本韩国三级网站| 日本一区二区三区高清不卡| 色av性av丰满av| 亚洲欧美成人一区二区在线电影| 川上优av中文字幕一区二区| 国产aⅴ精品一区二区三区黄| 欧美在线1区| 99精品国产高清在线观看| 手机看片一区二区| 久久精品99久久久久久久久| 综合久草视频| 国产日产欧美一区二区| 国产在线精品一区二区不卡了| 色婷婷在线视频观看| 日韩欧美一级在线播放| 国产嫩草在线视频| 国产麻豆乱码精品一区二区三区 | 久久久久久免费精品| 五月亚洲婷婷| 国产精品久久中文字幕| 99re视频精品| 国产一区免费看| 中文字幕亚洲一区二区三区五十路 | 手机免费看av网站| 亚洲视频一区二区在线| 国产乱码久久久久| 欧美高清第一页| 久久porn| 免费黄色一级网站| 亚洲图片你懂的| 亚洲精品视频网| 青草青草久热精品视频在线观看| 精品香蕉视频| 欧美视频国产视频| 亚洲一区二区偷拍精品| 天天舔天天干天天操| 国产精品久久久久aaaa九色| 国产精品成人一区二区不卡| 2018国产精品| 色综合久久久久综合体| 中文字幕在线观看日本| 91九色极品视频| 一区二区激情| 2017亚洲天堂| 亚洲第一二三四五区| 素人啪啪色综合| 97中文字幕在线| 国产视频不卡一区| 99在线观看精品视频| **欧美日韩vr在线| 欧美h版在线| 污污污www精品国产网站| 欧美在线一区二区| 毛片在线导航| 日韩在线导航| 粉嫩av一区二区三区粉嫩| 国产一区二区视频网站| 久久五月天色综合| 网友自拍区视频精品| 青青草精品在线| 色视频一区二区| 污片视频在线免费观看| 日本在线播放一区| 成人一区二区视频| 亚洲综合精品在线| 欧美影院久久久| 欧美 日韩 国产一区二区在线视频 | 国产欧美日韩视频一区二区|