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

前端性能優(yōu)化筆記之首屏時間采集指標的具體方法

開發(fā) 前端
通常,我們在開發(fā)環(huán)境中進行首屏時間測試,是通過在內(nèi)網(wǎng)中通過Chrome DevTools觀察首屏時間,這樣內(nèi)外網(wǎng)絡環(huán)境存在差異,導致測量的首屏時間也會有所不同。

本文轉載自微信公眾號「前端萬有引力」,作者一川。轉載本文請聯(lián)系前端萬有引力公眾號。

1寫在前面

通常,我們在開發(fā)環(huán)境中進行首屏時間測試,是通過在內(nèi)網(wǎng)中通過Chrome DevTools觀察首屏時間,這樣內(nèi)外網(wǎng)絡環(huán)境存在差異,導致測量的首屏時間也會有所不同。我們在開發(fā)中使用的是調(diào)試工具,而用戶是直接訪問的,兩者的訪問形式是不同的。觀察首屏時間的設備有多種,而真實的用戶人群不同,移動設備的型號和所處網(wǎng)絡環(huán)境也是各異的。

那么,如何了解用戶的首屏時間呢?大量用戶的首屏時間分布又是怎樣的呢?性能差的用戶首屏時間又是多少呢?

2手動采集辦法及優(yōu)缺點

所謂手動采集,一般就是通過埋點的方式進行采集上報,如:我們要收集當前頁面的用戶停留時間,就必須采集到打開頁面的時間和關閉或隱藏頁面的時間,再進行計算得到停留時間并上報。

如果是電商列表頁面,瀑布流型的頁面,需要根據(jù)各個機型的首屏位置,估算出一個平均的首屏位置,然后進行打點上報。

手動采集的兼容性強,可以隨著情況而進行變動,其次可以去中心化,各個業(yè)務模塊單獨負責自己的打點代碼,有問題時業(yè)務程序員去排查問題即可。但是手動采集也存在一些問題,容易與業(yè)務代碼嚴重耦合,它的覆蓋率不足,業(yè)務程序員一旦忙起來,性能優(yōu)化方案的實施就會延遲排后。

3自動化采集的辦法及優(yōu)點

自動化采集,即引入一段通用的代碼來做首屏時間自動化采集,引入過程中,除了必要的配置外不需要做其他事情。獨立性強,接入過程更加自動化,可以由一個公共團隊來開發(fā),試點后進行推廣到各個業(yè)務團隊。但是,有些個性化需求是無法得到滿足的,因為在工作中總會遇到一些特殊業(yè)務場景,會遇到難以實施自動化采集的情況。

4服務端模板業(yè)務下的采集方案

有人會說現(xiàn)在的前端開發(fā)不都是采用web框架進行開發(fā)嗎,為啥還會涉及到服務器模板呢。那是因為在一些B端業(yè)務的公司用的還是服務端模板,如Velocity、Smarty等,比如說微前端框架SSR也是用的服務端模板。

之所以會出現(xiàn)這種情況,這是因為后端比較重、前端偏配合,出于效率考慮前后端并沒有進行解耦。這時候如果使用現(xiàn)在流行的web前端框架vue/react,這無疑就會增加學習成本。

使用瀏覽器提供的DOMContentLoaded接口來采集首屏時間點,具體的思路是:當頁面中的HTML元素被加載和解析完成后,DOMContentLoaded事件會被觸發(fā),首屏時間=DOMContentLoaded時間=DOMContentLoadedEventEnd-fetchStart時間。

當然這種采集方法不能用于SPA單頁面應用業(yè)務場景,這是因為在使用Performance API接口采集的首屏時間可能是1106ms。而實際首屏時間可能就是1976ms。在SPA單頁面中,用戶請求一個頁面時,頁面會先加載index.html,加載完成后就會觸發(fā)DOMContentLoaded和load。頁面會相關腳本資源并通過axios異步請求數(shù)據(jù),使用數(shù)據(jù)渲染頁面主題部分,這個時候首屏才渲染完成。SPA的流行讓Performance API接口失去了原先的意義,那么,這種情況下應該如何采集首屏指標呢?

當然,我們的解決方案是采用MutationObeserver采集首屏時間。

5單頁面SPA應用業(yè)務場景下的采集方法

如果一個首屏頁面的內(nèi)容沒有被組件化,那么首屏時間就無法被統(tǒng)計到,除非各個業(yè)務都制定一套組件標準,首屏內(nèi)容必須封裝成組件。前面也知道onload的時間也并非最終時間,可能在onlaod階段,首屏還沒加載完。其次,沒有考慮到首屏是張圖片的情況,首屏雖然加載完成了,但是圖片是異步的,圖片并沒有進行加載。

我們想如果能夠在首屏渲染過程中,把各個資源的加載時間記錄到日志中,后續(xù)再通過分析,確定某個資源加載完的時間,那么就是首屏時間。

MutationObeserver接口提供了監(jiān)督對DOM樹所做更改的能力,它被設計為舊的MutationEvents功能的替代品,該功能是DOM3 Events規(guī)范的一部分。

當用戶進入頁面時,我們可以使用MutationObeserver監(jiān)控DOM元素,當DOM元素發(fā)生變化時,程序會標記變化的元素,記錄時間點和分數(shù),儲存在數(shù)組中。首屏指標采集到某些條件時,首屏渲染已經(jīng)結束了,我們需要考慮到首屏采集終止的條件。

遞歸遍歷DOM元素及其子元素,根據(jù)子元素所在層級設定元素權重,比如:頁面DOM元素的第一層設置為1,當其被渲染時得分為1,每增加一個元素層級權重增加0.5,當?shù)谖鍖蛹壴氐臋嘀鼐蜑?.5,渲染時給出對應分數(shù)。根據(jù)前面統(tǒng)計到的元素層級得分,計算元素的分數(shù)變化率,獲取變化率最大點對應的分數(shù),然后找到該分數(shù)對應的時間,即為首屏時間。

  1. function CScor(el, tiers, parentScore){ 
  2.   let score = 0; 
  3.   const tagName = el.tagName; 
  4.   // 判斷當前的標簽元素是否為指定的標簽元素 
  5.   if(!filterTagNameInTagNames(tagName)){ 
  6.     const childrenLen = el.children ? el.children.length : 0; 
  7.     // 判讀子元素的長度是否大于0 
  8.     if(childrenLen>0){ 
  9.       for(let childs = el.children, len = childrenLen-1; len >= 0; len--){ 
  10.         score += calculateScore(childs[len],tiers+1,score>0) 
  11.       } 
  12.     } 
  13.     // 判斷分數(shù)是否小于等于0,且父元素的分數(shù)為0 
  14.     if(score<= 0&& !parentScore){ 
  15.       if(!(el.getBoundingClintRect&& el.getBoundingClintRect().top<WH)) return 0 
  16.     } 
  17.     score += 1 + 0.5 * tiers; 
  18.   } 
  19.   return score 
  20.  
  21. function filterTagNameInTagNames(tagName){ 
  22.   return ["SCRIPT","STYLE","META","HEAD"].some(tag=>tag===tagName) 
  23.  
  24. calFinalScore(){ 
  25.   try { 
  26.     if(this.sendMark) return
  27.     const time = Date.now() - window.performance.timing.fetchStart; 
  28.     let isCheckFMP = time > 30000 || SCORE_ITEMS && SCORE_ITEMS.length > 4 && time - (SCORE_ITEMS && SCORE_ITEMS.length && SCORE_ITEMS[SCORE_ITEMS.length-1].t || 0) > 2 * CHECK_INTERVAL || ( 
  29.       SCORE_ITEMS.length > 10 && window.performance.timing.loadEventEnd !== 0 && 
  30.       SCORE_ITEMS[SCORE_ITEMS.length-1].score === SCORE_ITEMS[SCORE_ITEMS.length - 1].score 
  31.     ); 
  32.     if(this.observer && isCheckFMP){ 
  33.       this.observer.disconnect 
  34.       // 取FMP時間,默認是30001大于30s會自動被過濾 
  35.       this.fmp = record && record.t || 30001 
  36.       try { 
  37.         this.checkImgs(document.body) 
  38.         let max = Math.max(...this.imgs.map(element=>{ 
  39.           if(/^(\/\/)/.test(element)) element = "https:" + element 
  40.           try { 
  41.             return window.performance.getEntriesByName(element)[0].responseEnd || 0 
  42.           } catch (error) { 
  43.             return 0  
  44.           } 
  45.         })) 
  46.       } catch (error) { 
  47.         return 
  48.       } 
  49.     } 
  50.   } catch (error) { 
  51.     return 
  52.   } 

如果頁面里包括圖片,使用上面的首屏指標采集方案,結果準確嗎?答案是不準確的。上述的計算邏輯主要針對的是DOM元素而做的,圖片加載過程是異步,圖片容器(圖片的DOM元素)和內(nèi)容的加載是分開的,當容器加載出來時,內(nèi)容還沒出來,一定要確保內(nèi)容加載出來,才算是首屏。

進行個歸納,通常計算首屏時間的方法有:

  • 首屏模塊標記法
  • 統(tǒng)計首屏內(nèi)加載最慢的圖片
  • 自定義首屏

首屏模塊標簽標記法

在首屏模塊標簽標記法中,首屏時間等于firstScreen - performance.timing.navigationStart;。但是在實際業(yè)務中,能夠使用首屏模塊標簽標記法的情況比較少,大多數(shù)頁面都需要通過接口拉取數(shù)據(jù)才能完整展示,因此我們會使用JavaScript 腳本來判斷首屏頁面內(nèi)容加載情況。

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.   <meta charset="UTF-8"
  5.   <title>首屏</title> 
  6.   <script type="text/javascript"
  7.     window.pageStartTime = Date.now(); 
  8.   </script> 
  9.   <link rel="stylesheet" href="common.css"
  10.   <link rel="stylesheet" href="page.css"
  11. </head> 
  12. <body> 
  13.   <!-- 首屏可見模塊1 --> 
  14.   <div class="module-1"></div> 
  15.   <!-- 首屏可見模塊2 --> 
  16.   <div class="module-2"></div> 
  17.   <script type="text/javascript"
  18.     window.firstScreen = Date.now(); 
  19.   </script> 
  20.   <!-- 首屏不可見模塊3 --> 
  21.   <div class="module-3"></div> 
  22.     <!-- 首屏不可見模塊4 --> 
  23.   <div class="module-4"></div> 
  24. </body> 
  25. </html> 

 

 

 

 

 

 

 

 

 

 

 

 

統(tǒng)計首屏內(nèi)圖片完成加載的時間

在實際進行首屏加載中,加載最慢的資源文件是圖片,對此我們可以將加載最慢的圖片文件的時間作為首屏時間。這是因為在瀏覽器發(fā)起HTTP請求,在頁面中建立TCP連接,但是每個頁面所能建立的連接數(shù)又是有限的,使得并不能一次性將所有的圖片都能進行下載和展示。

基于此種情況,我們可以在頁面DOM樹構建完成后去遍歷首屏內(nèi)所有的圖片標簽,并對每個圖片標簽的onload事件進行監(jiān)聽,從而計算得到所有圖片中加載時間的最大值。這樣就得到首屏時間=加載最慢的圖片的時間點 - performance.timing.navigationStart。

自定義模塊內(nèi)容計算法

由于在統(tǒng)計首屏內(nèi)遍歷圖片標簽列表得到最大加載時間比較復雜,對此在業(yè)務中可以通過自定義模塊內(nèi)容,來簡化計算首屏時間。如下面的做法:

忽略圖片等資源加載情況,只考慮頁面主要DOM

只考慮首屏的主要模塊,而不是嚴格意義首屏線以上的所有內(nèi)容

6參考文章

《前端性能優(yōu)化方法與實踐》

《前端優(yōu)化-如何計算白屏和首屏時間》

7寫在最后

 

本文主要介紹了首屏指標采集相關的內(nèi)容,這種性能采集方案靠譜嗎?當前的互聯(lián)網(wǎng)大廠又在使用什么采集方案呢?就目前而言,上面介紹的是當前應用的最好的首屏指標采集方案,兼容了單頁面應用和服務端模板的頁面。

 

責任編輯:武曉燕 來源: 前端萬有引力
相關推薦

2009-12-31 15:05:00

Silverlight

2023-12-17 14:49:20

前端首屏時間

2023-11-25 20:16:22

前端

2022-01-09 16:45:36

前端性能優(yōu)化編程

2010-05-12 10:29:51

MySQL數(shù)據(jù)庫

2010-07-21 14:33:01

刪除telnet

2009-12-31 14:12:40

Silverlight

2009-12-16 15:04:26

Ruby實現(xiàn)strea

2009-12-03 14:43:46

phpMyAdmin配

2011-04-01 13:34:12

zabbix

2010-02-06 11:19:33

C++獲取文件

2009-12-25 16:52:57

網(wǎng)絡接入控制

2009-11-23 19:16:32

路由器測試

2010-04-23 13:53:29

Oracle密碼

2022-05-02 08:56:04

前端性能指標

2009-12-18 16:56:05

ADO.NET應用程序

2010-07-27 11:09:43

設置NFS

2009-10-21 14:27:12

Oracle用戶權限分

2010-03-11 17:16:48

Python平臺

2010-06-30 15:11:51

創(chuàng)建FTP服務器
點贊
收藏

51CTO技術棧公眾號

久久久久久久久久久久久久久国产| 国产精品欧美日韩| 国产精品久久久久久久99| 97caopron在线视频| 国产98色在线|日韩| 91黑丝在线观看| 五月天精品在线| 日韩欧美久久| 色94色欧美sute亚洲线路二| 欧美h视频在线观看| 欧美一级淫片aaaaaa| 丝袜诱惑制服诱惑色一区在线观看| 精品国产拍在线观看| 亚洲一级片av| 欧美日韩电影免费看| 亚洲少妇屁股交4| 精品国产综合久久| 国产精品探花视频| 欧美亚洲一级| 欧美激情va永久在线播放| 亚洲av无码国产精品麻豆天美| 成人午夜888| 91久久国产最好的精华液| 国产 欧美 日本| 大胆av不用播放器在线播放 | 国产欧美日韩不卡| 高清av免费一区中文字幕| 日本妇乱大交xxxxx| 亚洲激精日韩激精欧美精品| 中文字幕视频在线免费欧美日韩综合在线看 | 中文字幕乱码av| 亚州国产精品| 这里只有精品在线| 亚洲另类中文字| 污视频在线免费观看一区二区三区| 性少妇videosexfreexxx片| 青青草精品视频| 51精品国产黑色丝袜高跟鞋| 青青操视频在线播放| 日韩精品首页| 中文字幕欧美日韩| 成人免费无遮挡无码黄漫视频| 91精品短视频| 日韩欧美一区二区不卡| 五月天开心婷婷| 久久久加勒比| 精品视频在线看| www.色偷偷.com| 电影一区二区三| 精品日韩视频在线观看| 夜夜添无码一区二区三区| 羞羞电影在线观看www| 中文字幕一区二区不卡| 亚洲高清乱码| aaa在线观看| 欧美国产综合一区二区| 性欧美大战久久久久久久免费观看| 欧美视频综合| 91在线视频在线| 鲁丝一区二区三区免费| 蝌蚪视频在线播放| 久久久久99精品国产片| 日韩高清国产精品| 91看片在线观看| 亚洲人成7777| www插插插无码免费视频网站| 国产第一页在线视频| 亚洲国产一区二区视频| 国产v片免费观看| jizzjizz中国精品麻豆| 日韩欧美有码在线| 韩国中文字幕av| 日韩久久一区| 精品国产伦一区二区三区观看方式| 欧美激情一区二区三区p站| 国产精品流白浆在线观看| 日韩精品小视频| 亚洲码无人客一区二区三区| 日韩成人影院| 欧美激情一区二区三区高清视频 | 亚洲欧美在线视频| 在线观看视频黄色| 2018av在线| 欧美日韩一区二区三区在线免费观看| 亚洲熟妇av一区二区三区漫画| 多野结衣av一区| 色婷婷综合久久久中文一区二区| 免费激情视频在线观看| 欧美黑粗硬大| 日韩三级免费观看| 中文字幕在线视频播放| 色婷婷av一区二区三区丝袜美腿| 亚洲男人天堂久| 极品蜜桃臀肥臀-x88av| 国产精品a久久久久| 2019中文字幕全在线观看| 久久久久久久久久成人| 久久精品国产一区二区三区免费看| 国产噜噜噜噜久久久久久久久| 国产免费高清视频| bt欧美亚洲午夜电影天堂| 9a蜜桃久久久久久免费| 国产理论电影在线观看| 一区二区在线观看免费| 精品人妻一区二区三区四区在线 | 成人激情免费在线| 欧美 日韩 国产 成人 在线| 国产精品美女久久久久aⅴ| 国产精品av免费观看| 天堂资源在线| 在线电影院国产精品| 中文字幕在线视频播放| 日韩视频在线观看| 久久久欧美精品| 亚洲中文无码av在线| 北条麻妃一区二区三区| 日韩久久久久久久| 黄黄的网站在线观看| 欧美日韩国产在线| 99中文字幕在线| 国产成人高清| 欧美激情手机在线视频 | 91理论片午午论夜理片久久| 性xxxx视频播放免费| 国产午夜亚洲精品不卡| 国产人妻777人伦精品hd| 色综合久久久| 精品亚洲永久免费精品| 69av.com| 老司机精品视频在线| 国产综合 伊人色| 国产一二区在线| 色婷婷久久久久swag精品| 风韵丰满熟妇啪啪区老熟熟女| 欧美肉体xxxx裸体137大胆| 久久久久久高潮国产精品视| 国产免费一区二区三区最新不卡| 久久久久久99久久久精品网站| 亚洲乱码日产精品bd在线观看| 78精品国产综合久久香蕉| 日韩国产高清污视频在线观看| 日韩在线观看免| 激情久久久久久久久久久久久久久久| 秋霞毛片久久久久久久久| 成年网站在线视频网站| 91精品国产综合久久小美女 | 国产精品久久久久久久岛一牛影视 | 欧美激情综合亚洲一二区| 成人小视频在线播放| 成人h动漫精品一区二| 久久亚洲a v| 国产一区 二区| 日韩在线欧美在线| 正在播放木下凛凛xv99| 久久精品视频在线免费观看| 国产 福利 在线| 精品三级av| 亚州国产精品久久久| 成人免费一级视频| 又紧又大又爽精品一区二区| 手机在线免费毛片| 中文字幕一区二区三区乱码图片| 日本一区二区不卡| 欧美高清电影在线| 在线欧美小视频| 无套内谢大学处破女www小说| 亚洲一区一卡| 欧美精品中文字幕一区二区| 亚洲欧美电影| 亚洲性视频网站| 亚洲天堂网在线观看视频| 国产欧美日韩麻豆91| 亚洲老女人av| 999久久久精品国产| 91久久久在线| 6699嫩草久久久精品影院| 亚洲第一区在线| 日本三级一区二区| 久久精品亚洲麻豆av一区二区| 成人观看免费完整观看| 国产欧美日韩一区二区三区四区| 国产精品久久久久久av福利软件 | 91精品国产综合久| 亚洲视频在线一区| 911亚洲精选| 亚洲在线播放| 视频一区三区| 高清在线一区二区| 午夜精品久久久久久久白皮肤| a天堂在线资源| 欧美久久高跟鞋激| 男女羞羞免费视频| 久久蜜臀精品av| 国产原创精品在线| 国产真实久久| 久久综合九色99| 欧美91在线|欧美| 欧美日本高清一区| 国产在线高清| 日韩亚洲欧美在线| 毛片基地在线观看| 国产色91在线| 一区二区免费在线观看视频| 日韩高清一区在线| www.黄色网址.com| 亚洲美女久久| 91视频-88av| 天堂√8在线中文| 九九精品在线视频| 国产小视频福利在线| 日韩午夜精品视频| 日韩免费av网站| 一区二区三区在线观看国产 | 中文字幕亚洲区| 国产精品久久久久久在线观看| 日韩中文字幕一区二区三区| 精品免费久久久久久久| 国产剧情在线观看一区| 91精品国产综合久久久久久蜜臀| 少妇在线看www| 九九九久久久久久| 天堂а√在线官网| 国产丝袜一区二区三区免费视频| 国产一区二区三区在线观看| 欧美日韩激情美女| 97福利一区二区| 国产剧情在线观看| 欧美高清www午色夜在线视频| 麻豆成人免费视频| 国产欧美在线视频| 精品在线免费观看视频| 国产午夜精品一区二区三区视频| 色综合色综合色综合色综合| 性久久久久久| 中文字幕不卡每日更新1区2区| 国产免费黄色网址| 一本大道久久a久久精二百| 久久久久噜噜噜亚洲熟女综合| 国产精品少妇自拍| 黄色片视频免费观看| 国产精品一区二区不卡| 污污视频网站免费观看| 肉丝袜脚交视频一区二区| 精品人妻大屁股白浆无码| 国产精品久久久久久久免费观看| 日本在线视频一区| 亚洲成a人片77777在线播放| av一区观看| 伊色综合久久之综合久久| 99在线视频播放| 国产乱码精品一区二区三区亚洲人| 国产成人一区二区三区| 欧美日韩美女| 欧美一级片久久久久久久| www.成人影院| 欧美在线视频免费| 五月天国产在线| 91精品国产亚洲| 三级中文字幕在线观看| 国内外成人免费激情在线视频网站 | 99精品福利视频| 国产自产在线视频| 亚洲深夜影院| 久久9精品区-无套内射无码| 久久精品人人| www日韩视频| 麻豆久久久久久久| 国产一级免费大片| 国产美女精品在线| 亚洲成人福利视频| 波多野结衣亚洲一区| 男生裸体视频网站| 久久久久久99精品| 精品手机在线视频| 亚洲视频网在线直播| www青青草原| 曰韩精品一区二区| 亚洲欧美精品一区二区三区| 色综合天天狠狠| 在线视频1卡二卡三卡| 欧美精品久久一区二区三区| 一区二区精品视频在线观看| 欧美男同性恋视频网站| 成人午夜视频一区二区播放| 亚洲精品美女免费| 国产日产精品久久久久久婷婷| 中文字幕一精品亚洲无线一区| 黄色在线视频网站| 欧美精品免费播放| 桃花岛tv亚洲品质| 国产精品视频地址| 日韩成人久久| 久久99精品国产一区二区三区| 国产乱码精品一区二区三区四区| 国产女教师bbwbbwbbw| 国产精品视频| 热久久久久久久久| 99久久综合狠狠综合久久| 日韩不卡av在线| 综合久久给合久久狠狠狠97色| 日韩免费视频一区二区视频在线观看| 91福利视频久久久久| 国产精品久久久久久久久毛片| 欧美精品一区二区三区视频| 五月婷婷在线视频| 欧美激情精品久久久久| 校园春色亚洲色图| 99re在线观看视频| 国产欧美日韩影院| 潘金莲一级淫片aaaaaa播放1| 久久久人人人| 原创真实夫妻啪啪av| 久久久99精品免费观看| 欧美成人精品欧美一级私黄| 在线视频一区二区三| 亚洲第一视频在线| 在线视频日本亚洲性| 大黄网站在线观看| 国产色婷婷国产综合在线理论片a| 精品一区二区三区在线观看视频| 色噜噜一区二区| 亚洲成人资源| 欧美日韩精品区别| 久久久久久97三级| 欧美偷拍第一页| 91超碰这里只有精品国产| 欧美一区二区三区少妇| 色综合久综合久久综合久鬼88| 成人国产精选| 国内一区二区三区在线视频| 国产精品videosex极品| 中文字幕亚洲欧洲| 91视频在线看| 国产精品日日夜夜| 欧美日韩精品一区二区三区四区| 男男激情在线| 91tv亚洲精品香蕉国产一区7ujn| 国产精品一区三区在线观看| 亚洲国产精品一区二区第四页av| 亚洲专区欧美专区| 亚洲一区二区在线免费| 亚洲一二三四在线观看| 99在线小视频| 欧美成人精品一区二区三区| 午夜不卡一区| 亚洲午夜精品久久久久久浪潮| 久久精品国产清高在天天线| 国产真实乱人偷精品人妻| 欧美特级www| 香蕉av在线播放| 性欧美亚洲xxxx乳在线观看| 亚洲视频精选| 2019日韩中文字幕mv| 成人国产精品视频| 国产大片aaa| 亚洲成人黄色网| 91亚洲天堂| 国产精品日本一区二区| 国内精品亚洲| 特级特黄刘亦菲aaa级| 一区二区在线观看av| 丰满人妻一区二区| 午夜精品在线观看| 日韩黄色网络| 欧美视频免费看欧美视频| 26uuuu精品一区二区| 最新中文字幕一区| 亚洲性生活视频| 成人在线视频播放| 在线观看成人av电影| 国产在线播放一区二区三区| 免费中文字幕视频| 精品成人一区二区三区| 成人影院av| 亚洲一区3d动漫同人无遮挡 | 日韩在线不卡| 国产精品自在自线| 午夜欧美大尺度福利影院在线看| 少妇高潮久久久| 青青草原一区二区| 欧美视频免费| 国产吃瓜黑料一区二区| 精品av在线播放| 国产片在线观看| 成人午夜在线观看| 国产精品久久777777毛茸茸| 男生草女生视频| 欧美日韩国产一区二区三区地区| av在线导航| 精品国产一区二区三区麻豆小说 | 中文字幕免费高清在线观看| 久久精品成人欧美大片| 日韩成人视屏| 亚洲最大综合网| 亚洲精品成人精品456| 色婷婷中文字幕| 国产精品国产三级国产aⅴ浪潮| 欧美99在线视频观看| 粉嫩av蜜桃av蜜臀av| 在线91免费看|