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

深入研究:http2的真正性能到底如何

開發 前端
http2的概念提出已經有相當長一段時間了,而網上關于關于http2的文章也一搜一大把。但是從搜索的結果來看,現有的文章多是偏向于對http2的介紹,鮮有真正從數據上具體分析的。這篇文章正是出于填補這塊空缺內容的目的,通過一系列的實驗以及數據分析,對http2的性能進行深入研究。

[[174074]]

一、研究目的

http2的概念提出已經有相當長一段時間了,而網上關于關于http2的文章也一搜一大把。但是從搜索的結果來看,現有的文章多是偏向于對http2的介紹,鮮有真正從數據上具體分析的。這篇文章正是出于填補這塊空缺內容的目的,通過一系列的實驗以及數據分析,對http2的性能進行深入研究。當然,由于本人技術有限,實驗所使用的方法肯定會有不足之處,如果各位看官有發現問題,還請向我提出,我一定會努力修改完善實驗的方法的!

二、基礎知識

關于HTTP2的基礎知識,可以參考下列幾篇文章,在這里就不進行贅述了。

通過學習相關資料,我們已經對HTTP2有了一個大致的認識,接下來將通過設計一個模型,對HTTP2的性能進行實驗測試。

三、實驗設計

設置實驗組:搭建一個HTTP2(SPDY)服務器,能夠以HTTP2的方式響應請求。同時,響應的內容大小,響應的延遲時間均可自定義。

設置對照組:搭建一個HTTP1.x服務器,以HTTP1.x的方式響應請求,其可自定義內容同實驗組。另外為了減少誤差,HTTP1.x服務器使用https協議。

測試過程:客戶端通過設置響應的內容大小、請求資源的數量、延遲時間、上下行帶寬等參數,分別對實驗組服務器和對照組服務器發起請求,統計響應完成所需時間。

由于nginx切換成http2需要升級nginx版本以及取得https證書,且在服務器端的多種自定義設置所涉及的操作環節相對復雜,綜合考慮之下放棄使用nginx作為實驗用服務器的方案,而是采用了NodeJS方案。在實驗的初始階段,使用了原生的NodeJS搭配node-http2模塊進行服務器搭建,后來改為了使用express框架搭配node-spdy模塊搭建。原因是,原生NodeJS對于復雜請求的處理非常復雜,express框架對請求、響應等已經做了一系列的優化,可以有效減少人為的誤差。另外node-http2模塊無法與express框架兼容,同時它的性能較之node-spdy模塊也更低(General performance, node-spdy vs node-http2 #98),而node-spdy模塊的功能與node-http2模塊基本一致。

1、服務器搭建

實驗組和對照組的服務器邏輯完全一致,關鍵代碼如下:

  1. app.get('/option/?', (req, res) => { 
  2.     allow(res) 
  3.     let size = req.query['size'
  4.     let delay = req.query['delay'
  5.     let buf = new Buffer(size * 1024 * 1024) 
  6.     setTimeout(() => { 
  7.         res.send(buf.toString('utf8')) 
  8.     }, delay) 
  9. })  

其邏輯是,根據從客戶端傳入的參數,動態設置響應資源的大小和延遲時間。

2、客戶端搭建

客戶端可動態設置請求的次數、資源的數目、資源的大小和服務器延遲時間。同時搭配Chrome的開發者工具,可以人為模擬不同網絡環境。在資源請求響應結束后,會自動計算總耗時時間。關鍵代碼如下:

  1. for (let i = 0; i < reqNum; i++) { 
  2.     $.get(url, function (data) { 
  3.         imageLoadTime(output, pageStart) 
  4.     }) 
  5.  

客戶端通過循環對資源進行多次請求,其數量可設置。每一次循環都會通過imageLoadTime更新時間,以實現時間統計的功能。

3、實驗項目

a. http2性能研究

通過研究章節二的文章內容,可以把http2的性能影響因素歸結于“延遲”和“請求數目”。本實驗增加了“資源體積”和“網絡環境”作為影響因素,下面將會針對這四項進行詳細的測試實驗。其中每一次實驗都會重復10次,取平均值后作記錄。

b. 服務端推送研究

http2還有一項非常特別的功能——服務端推送。服務端推送允許服務器主動向客戶端推送資源。本實驗也會針對這個功能展開研究,主要研究服務端推送的使用方法及其對性能的影響。

四、http2性能數據統計

1、延遲因素對性能的影響

 

   

2、請求數目對性能的影響

通過上一個實驗,可以知道在延遲為10ms的時候,http1.x和http2的時間統計相近,故本次實驗延遲時間設置為10ms。

 

 

 

3、資源體積對性能的影響

通過上兩個實驗,可以知道在延遲為10ms,資源數目為30個的時候,http1.x和http2的時間統計相近,故本次實驗延遲時間設置為10ms,資源數目30個。

 

4、網絡環境對性能的影響

通過上兩個實驗,可以知道在延遲為10ms,資源數目為30個的時候,http1.x和http2的時間統計相近,故本次實驗延遲時間設置為10ms,資源數目30個。

 

 

五、http2服務端推送實驗

本實驗主要針對網絡環境對服務端推送速度的影響進行研究。在本實驗中,所請求/推送的資源都是一個體積為290Kb的JS文件。每一個網絡環境下都會重復十次實驗,取平均值后填入表格。

 

從上述表格可以發現一個非常奇怪的現象,在開啟了網絡節流以后(包括Wifi選項),服務端推送的速度都遠遠比不上普通的客戶端請求,但是在關閉了網絡節流后,服務端推送的速度優勢非常明顯。在網絡節流的Wifi選項中,下載速度為30M/s,上傳速度為15M/s。而測試所用網絡的實際下載速度卻只有542K/s,上傳速度只有142K/s,遠遠達不到網絡節流Wifi選項的速度。為了分析這個原因,我們需要理解“服務端推送”的原理,以及推送過來的資源的存放位置在哪里。

普通的客戶端請求過程如下圖:

服務端推送的過程如下圖:

從上述原理圖可以知道,服務端推送能把客戶端所需要的資源伴隨著index.html一起發送到客戶端,省去了客戶端重復請求的步驟。正因為沒有發起請求,建立連接等操作,所以靜態資源通過服務端推送的方式可以極大地提升速度。但是這里又有一個問題,這些被推送的資源又是存放在哪里呢?參考了這篇文章Issue 5: HTTP/2 Push以后,終于找到了原因。我們可以把服務端推送過程的原理圖深入一下:

服務端推送過來的資源,會統一放在一個網絡與http緩存之間的一個地方,在這里可以理解為“本地”。當客戶端把index.html解析完以后,會向本地請求這個資源。由于資源已經本地化,所以這個請求的速度非常快,這也是服務端推送性能優勢的體現之一。當然,這個已經本地化的資源會返回200狀態碼,而非類似localStorage的304或者200 (from cache)狀態碼。Chrome的網絡節流工具,會在任何“網絡請求”之間加入節流,由于服務端推送活來的靜態資源也是返回200狀態碼,所以Chrome會把它當作網絡請求來處理,于是導致了上述實驗所看到的問題。

六、研究結論

通過上述一系列的實驗,我們可以知道http2的性能優勢集中體現在“多路復用”和“服務端推送”上。對于請求數目較少(約小于30個)的情況下,http1.x和http2的性能差異不大,在請求數目較多且延遲大于30ms的情況下,才能體現http2的性能優勢。對于網絡狀況較差的環境,http2的性能也高于http1.x。與此同時,如果把靜態資源都通過服務端推送的方式來處理,加載速度會得到更加巨大的提升。

在實際的應用中,由于http2多路復用的優勢,前端應用團隊無須采取把多個文件合并成一個,生成雪碧圖之類的方法減少網絡請求。除此之外,http2對于前端開發的影響并不大。

服務端升級http2,如果是使用NodeJS方案,只需要把node-http模塊升級為node-spdy模塊,并加入證書即可。nginx方案的話可以參考這篇文章:Open Source NGINX 1.9.5 Released with HTTP/2 Support

若要使用服務端推送,則在服務端需要對響應的邏輯進行擴展,這個需要視情況具體分析實施。

七、后記

紙上得來終覺淺,絕知此事要躬行。如果不是真正的設計實驗、進行實驗,我可能根本不會知道原來http2也有坑,原來使用Chrome做調試的時候也有需要注意的地方。

希望這篇文章能夠對研究http2的同學有些許幫助吧,如文章開頭所說,如果你發現我的實驗設計有任何問題,或者你想到了更好的實驗方式,也歡迎向我提出,我一定會認真研讀你的建議的!

下面附送實驗所需源碼:1、客戶端頁面

  1. <!-- http1_vs_http2.html --> 
  2.  
  3. <!DOCTYPE html> 
  4. <html lang="en"
  5. <head> 
  6.    <meta charset="UTF-8"
  7.    <title>http1 vs http2</title> 
  8.    <script src="//cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> 
  9.    <style> 
  10.        .box { 
  11.            floatleft
  12.            width: 200px; 
  13.            margin-right: 100px; 
  14.            margin-bottom: 50px; 
  15.            padding: 20px; 
  16.            border: 4px solid pink; 
  17.            font-family: Microsoft Yahei; 
  18.        } 
  19.        .box h2 { 
  20.            margin: 5px 0; 
  21.        } 
  22.        .box .done { 
  23.            color: pink; 
  24.            font-weight: bold; 
  25.            font-size: 18px; 
  26.        } 
  27.        .box button { 
  28.            padding: 10px; 
  29.            display: block; 
  30.            margin: 10px 0; 
  31.        } 
  32.    </style> 
  33. </head> 
  34. <body> 
  35.    <div class="box"
  36.        <h2>Http1.x</h2> 
  37.        <p>Time: <span id="output-http1"></span></p> 
  38.        <p class="done done-1">× Unfinished...</p> 
  39.        <button class="btn-1">Get Response</button> 
  40.    </div> 
  41.  
  42.    <div class="box"
  43.        <h2>Http2</h2> 
  44.        <p>Time: <span id="output-http2"></span></p> 
  45.        <p class="done done-1">× Unfinished...</p> 
  46.        <button class="btn-2">Get Response</button> 
  47.    </div> 
  48.  
  49.    <div class="box"
  50.        <h2>Options</h2> 
  51.        <p>Request Num: <input type="text" id="req-num"></p> 
  52.        <p>Request Size (Mb): <input type="text" id="req-size"></p> 
  53.        <p>Request Delay (ms): <input type="text" id="req-delay"></p> 
  54.    </div> 
  55.  
  56.    <script> 
  57.        function imageLoadTime(id, pageStart) { 
  58.          let lapsed = Date.now() - pageStart; 
  59.          document.getElementById(id).innerHTML = ((lapsed) / 1000).toFixed(2) + 's' 
  60.        } 
  61.         
  62.        let boxes = document.querySelectorAll('.box'
  63.        let doneTip = document.querySelectorAll('.done'
  64.        let reqNumInput = document.querySelector('#req-num'
  65.        let reqSizeInput = document.querySelector('#req-size'
  66.        let reqDelayInput = document.querySelector('#req-delay'
  67.  
  68.        let reqNum = 100 
  69.        let reqSize = 0.1 
  70.        let reqDelay = 300 
  71.  
  72.        reqNumInput.value = reqNum 
  73.        reqSizeInput.value = reqSize 
  74.        reqDelayInput.value = reqDelay 
  75.  
  76.        reqNumInput.onblur = function () { 
  77.            reqNum = reqNumInput.value 
  78.        } 
  79.  
  80.        reqSizeInput.onblur = function () { 
  81.            reqSize = reqSizeInput.value 
  82.        } 
  83.  
  84.        reqDelayInput.onblur = function () { 
  85.            reqDelay = reqDelayInput.value 
  86.        } 
  87.  
  88.        function clickEvents(index, url, output, server) { 
  89.            doneTip[index].innerHTML = '× Unfinished...' 
  90.            doneTip[index].style.color = 'pink' 
  91.            boxes[index].style.borderColor = 'pink' 
  92.            let pageStart = Date.now() 
  93.            for (let i = 0; i < reqNum; i++) { 
  94.                $.get(url, function (data) { 
  95.                    console.log(server + ' data'
  96.                    imageLoadTime(output, pageStart) 
  97.                    if (i === reqNum - 1) { 
  98.                        doneTip[index].innerHTML = '√ Finished!' 
  99.                        doneTip[index].style.color = 'lightgreen' 
  100.                        boxes[index].style.borderColor = 'lightgreen' 
  101.                    } 
  102.                }) 
  103.            } 
  104.        } 
  105.  
  106.        document.querySelector('.btn-1').onclick = function () { 
  107.            clickEvents(0, 'https://localhost:1001/option?size=' + reqSize + '&delay=' + reqDelay, 'output-http1''http1.x'
  108.        } 
  109.  
  110.        document.querySelector('.btn-2').onclick = function () { 
  111.            clickEvents(1, 'https://localhost:1002/option?size=' + reqSize + '&delay=' + reqDelay, 'output-http2''http2'
  112.        } 
  113.    </script> 
  114. </body> 
  115. </html>  

2、服務端代碼(http1.x與http2僅有一處不同)

  1. const http = require('https') // 若為http2則把'https'模塊改為'spdy'模塊 
  2. const url = require('url'
  3. const fs = require('fs'
  4. const express = require('express'
  5. const path = require('path'
  6.  
  7. const app = express() 
  8.  
  9. const options = { 
  10.   key: fs.readFileSync(`${__dirname}/server.key`), 
  11.   cert: fs.readFileSync(`${__dirname}/server.crt`) 
  12.  
  13. const allow = (res) => { 
  14.   res.header("Access-Control-Allow-Origin""*"
  15.   res.header("Access-Control-Allow-Headers""X-Requested-With"
  16.   res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"
  17.  
  18. app.set('views', path.join(__dirname, 'views')) 
  19. app.set('view engine''ejs'
  20. app.use(express.static(path.join(__dirname, 'static'))) 
  21.  
  22. app.get('/option/?', (req, res) => { 
  23.     allow(res) 
  24.     let size = req.query['size'
  25.     let delay = req.query['delay'
  26.     let buf = new Buffer(size * 1024 * 1024) 
  27.     setTimeout(() => { 
  28.         res.send(buf.toString('utf8')) 
  29.     }, delay) 
  30. }) 
  31.  
  32. http.createServer(options, app).listen(1001, (err) => { // http2服務器端口為1002 
  33.     if (err) throw new Error(err) 
  34.     console.log('Http1.x server listening on port 1001.'
  35. })  
責任編輯:龐桂玉 來源: segmentfault
相關推薦

2022-07-27 14:24:38

MySQL數據庫SQL

2011-12-15 10:43:20

JavaNIO

2012-10-29 10:30:36

CSSWeb前端display

2010-08-03 17:36:55

DB2數據庫

2011-06-01 10:58:54

Android Service

2022-05-11 09:03:05

CSS容器文本換行

2010-08-26 15:48:21

DB2優化數據庫

2015-08-19 11:17:02

Windows 10DirectX 12

2010-06-21 13:07:14

2010-05-31 17:45:50

MySQL行鎖

2017-06-06 11:29:23

Java異常研究與分析

2016-01-12 18:04:55

Java異常研究

2018-12-24 15:00:58

混合云多云云采用

2010-11-23 16:35:59

MySQL刪除多表數據

2010-11-18 17:24:27

Oracle旋轉ins

2013-01-07 13:38:56

Android開發布局長度單位

2021-05-25 09:00:00

Kubernetes容器集群

2009-12-08 18:45:17

PHP檢查函數可用

2010-05-19 14:45:46

2009-10-20 10:17:50

綜合布線系統驗收
點贊
收藏

51CTO技術棧公眾號

美女的胸无遮挡在线观看| 国产ts变态重口人妖hd| 日韩伦理一区二区三区| 色噜噜狠狠色综合中国| 色一情一乱一伦一区二区三欧美 | 欧美oldwomenvideos| 欧美一区二区精品在线| 欧美 日韩 亚洲 一区| 国产乱理伦片a级在线观看| 精品制服美女久久| 午夜精品久久久久久久99热| 欧美午夜激情影院| 日韩精品一区二区三区中文在线| 五月激情综合婷婷| eeuss中文| 天天干天天插天天操| 久久国产免费看| 5566日本婷婷色中文字幕97| 欧美日韩黄色网| 国产传媒欧美日韩成人精品大片| 欧美xxxxxxxx| 午夜免费看视频| 蜜桃视频在线观看免费视频| 亚洲日穴在线视频| 精品免费国产| 午夜精品一二三区| 久久国产精品色婷婷| 热草久综合在线| 久久久久久久福利| 久久裸体网站| 亚洲欧美中文字幕在线一区| 国产香蕉精品视频| www.久久爱.com| 欧美天天综合网| 日韩精品视频一区二区在线观看| 精灵使的剑舞无删减版在线观看| 国产精品嫩草久久久久| 欧美激情导航| 午夜影院免费视频| youjizz国产精品| 99re国产在线播放| 国产精品无码免费播放| 日韩成人精品视频| 欧美又大又粗又长| 日韩精品视频播放| 一区免费视频| 欧美精品第一页在线播放| 男人av资源站| 午夜欧美在线| 久久精品99国产精品酒店日本 | 日本三级久久久| 99视频在线看| 一区二区三区成人精品| 欧美激情性做爰免费视频| 久久久.www| 黄色免费成人| 久久久久久久久电影| 国产在线一区视频| 亚洲国产精品第一区二区三区 | avav成人| 欧美性猛交xxxx黑人交| 日本特黄a级片| 成人黄色毛片| 欧美精品丝袜久久久中文字幕| 欧美三级午夜理伦三级富婆| 久久三级毛片| 91精品午夜视频| 91精品人妻一区二区三区蜜桃2| 成人情趣片在线观看免费| 国产黄色三级网站| 天天久久夜夜| 亚洲欧美中文在线视频| 亚洲黄色网址大全| 无需播放器亚洲| 欧美久久精品午夜青青大伊人| 婷婷色中文字幕| 在线观看日韩av电影| 2019中文字幕在线| 中国老头性行为xxxx| 麻豆成人91精品二区三区| 成人精品视频久久久久| www.天堂av.com| 97精品视频在线观看自产线路二| 蜜桃导航-精品导航| 2019中文字幕在线视频| 1000精品久久久久久久久| a级黄色片免费| 三级在线看中文字幕完整版| 在线欧美一区二区| 精品国产乱码久久久久久1区二区| 影音先锋欧美激情| 国产一区二区三区视频| 日韩高清dvd碟片| 亚洲一区不卡| 国产日韩av在线播放| 亚洲国产一二三区| 久久精品视频一区二区| 老司机午夜网站| 国产精品专区免费| 欧美浪妇xxxx高跟鞋交| 日韩精品视频一区二区| 成人激情诱惑| 国模视频一区二区三区| 天堂av免费在线观看| 国产99久久精品| 午夜欧美性电影| 久久久123| 欧美日韩三级在线| 内射中出日韩无国产剧情| 无需播放器亚洲| 国产91精品网站| 黑人精品一区二区三区| 国产精品久久久久久久久快鸭 | 欧美午夜视频在线| 成人欧美在线| 欧日韩精品视频| 日韩av无码一区二区三区不卡| 日韩欧美自拍| 国产91精品高潮白浆喷水| 国产毛片毛片毛片毛片毛片| 久久久精品免费网站| 美脚丝袜脚交一区二区| 99视频有精品高清视频| 亚洲人成电影在线观看天堂色| 精品无码m3u8在线观看| 久久99精品久久久久久国产越南| 欧美三日本三级少妇三99| bl视频在线免费观看| 欧美一区二区三区视频| 色www亚洲国产阿娇yao| 久久久久久穴| 久久99精品久久久久久秒播放器| 69xxx在线| 欧美日韩www| 国产高潮呻吟久久| 国产亚洲在线| 精品国产91亚洲一区二区三区www| 成人黄视频在线观看| 欧美老女人在线| 亚洲AV成人无码精电影在线| 日韩av一区二区在线影视| 欧美高清性xxxxhdvideosex| 交100部在线观看| 亚洲的天堂在线中文字幕| 九九九免费视频| 国产一区二区在线看| 精品久久免费观看| 亚洲伦理久久| 久久夜色精品国产亚洲aⅴ| 一区二区三区免费观看视频| 国产精品视频观看| 黄色永久免费网站| 久久人体视频| 国产综合香蕉五月婷在线| 性开放的欧美大片| 欧美日本一区二区三区| 国产精品久久久免费看| 久草这里只有精品视频| 欧美 另类 交| 欧美高清hd| 久久久在线观看| 无码精品人妻一区二区| 日韩欧美国产视频| 熟女少妇内射日韩亚洲| 免费在线观看视频一区| 综合色婷婷一区二区亚洲欧美国产| 亚洲精品伦理| 九九视频直播综合网| 内射无码专区久久亚洲| 精品成人国产在线观看男人呻吟| 亚洲av无码一区二区二三区| 久久久久久久尹人综合网亚洲| 亚洲成人蜜桃| 秋霞影院一区| 91精品国产高清自在线| 国产资源在线播放| 欧美日韩国产不卡| 99视频只有精品| www.欧美日韩国产在线| youjizzxxxx18| 亚洲a在线视频| 狠狠色狠狠色综合人人| 久久野战av| 欧美插天视频在线播放| 欧洲精品久久一区二区| 91官网在线免费观看| 一级性生活免费视频| 大尺度一区二区| 成人性生生活性生交12| 在线成人直播| 欧美不卡在线一区二区三区| 亚洲欧美综合久久久久久v动漫| 欧美激情伊人电影| 国产小视频在线播放| 91精品国产麻豆国产自产在线 | 色呦呦在线资源| 日韩精品在线播放| 97人妻人人澡人人爽人人精品| 亚洲国产精品一区二区www| 国产jjizz一区二区三区视频| 国产一区在线视频| 免费在线激情视频| 91精品高清| 日本精品一区二区三区不卡无字幕| 精品国产18久久久久久二百| 欧美做爰性生交视频| 高清全集视频免费在线| 亚洲欧美综合图区| 午夜精品久久久久久久99| 欧美在线免费视屏| 色婷婷在线观看视频| 亚洲品质自拍视频| 91精品国自产在线| www.欧美日韩国产在线| 特种兵之深入敌后| 美腿丝袜在线亚洲一区| 播放灌醉水嫩大学生国内精品| 你懂的成人av| 亚洲欧洲中文| 精品freesex老太交| 国产自产在线视频一区| 日韩一级淫片| 成人欧美一区二区三区在线| 亚洲成人激情社区| 91高清免费在线观看| 欧美人动性xxxxz0oz| 久久亚洲电影天堂| 91福利在线视频| 亚洲日本欧美中文幕| 亚洲人成色777777老人头| 日韩精品最新网址| 国产影视一区二区| 欧美视频一区二区在线观看| 无码人妻av免费一区二区三区| 五月婷婷综合在线| 国产精彩视频在线| 亚洲影视在线观看| 欧美人妻一区二区| 亚洲欧美日韩精品久久久久| 国产白丝一区二区三区| 中文字幕乱码亚洲精品一区| 极品人妻videosss人妻| 久久精品夜夜夜夜久久| av电影在线不卡| 久久久美女毛片| 国产毛片久久久久久久| 国产亚洲1区2区3区| 无码人妻精品一区二区中文| 久久久久九九视频| 性猛交娇小69hd| 欧美国产综合色视频| 久久久久久成人网| 国产精品人人做人人爽人人添| 黄色免费一级视频| 日韩码欧中文字| 欧美丰满艳妇bbwbbw| 亚洲国产综合在线| 西西44rtwww国产精品| 福利视频一区二区| 怡红院av久久久久久久| 欧美色中文字幕| 97免费观看视频| 日韩欧美在线综合网| 国产综合视频在线| 日韩精品久久久久| a天堂在线资源| 久久成人免费视频| √天堂8资源中文在线| 欧美中文字幕第一页| 97久久网站| 亚洲xxxx视频| 日韩精品福利一区二区三区| 日本一区二区高清视频| 91成人影院| 热99这里只有精品| 日韩成人精品在线观看| 午夜影院免费版| 91在线码无精品| 99自拍偷拍视频| 亚洲一二三区在线观看| 亚洲欧美一区二区三区在线观看| 欧美日韩精品欧美日韩精品一| 国产av一区二区三区| 国产偷亚洲偷欧美偷精品| av资源网在线观看| 欧美国产日韩一区二区| 日本不卡一二三| 91亚洲精华国产精华| 琪琪久久久久日韩精品 | eeuss影院www在线观看| 久久成人国产精品| 浪潮色综合久久天堂| aa成人免费视频| 国内亚洲精品| 欧美a级免费视频| 青青草97国产精品免费观看无弹窗版 | 欧美人与性动交α欧美精品济南到 | 天天做天天爱夜夜爽| 欧美巨大另类极品videosbest | 在线电影一区二区| 国产91美女视频| 国产毛片一区二区| 无码国产69精品久久久久同性| 亚洲精品一卡二卡| wwwwww在线观看| 亚洲国产精品国自产拍av秋霞| 日韩精品毛片| 热99久久精品| ady日本映画久久精品一区二区| 亚洲精品一区二区三区樱花 | 97成人超碰免| av在线亚洲一区| 色播亚洲婷婷| 国产精品久久久免费| av地址在线观看| 国产精品福利一区| 国产免费一区二区三区四区五区| 欧美tickling挠脚心丨vk| 五月婷婷在线视频| 国产成+人+综合+亚洲欧洲| 成人av地址| 欧美大片免费播放| 九九在线精品视频| 中文字幕黄色网址| 色婷婷av一区| 深夜影院在线观看| 久久久国产精品免费| 精品久久在线| 色就是色欧美| 丝袜亚洲另类欧美| 亚洲av无码一区二区二三区| 午夜视频一区在线观看| 成人爽a毛片一区二区| 欧美成在线观看| 免费欧美网站| 黄色污污在线观看| 国产精品18久久久久久久久| 国产老头老太做爰视频| 欧美日韩不卡一区| 精产国品自在线www| 国产色婷婷国产综合在线理论片a| 国产不卡av一区二区| 欧美一级黄色影院| 国产婷婷色一区二区三区四区| 中文在线第一页| 亚洲人在线视频| 8av国产精品爽爽ⅴa在线观看| 欧美在线视频二区| 秋霞av亚洲一区二区三| 国产探花视频在线播放| 欧美日韩一区二区三区在线| wwwww在线观看免费视频| 国产精品久久久久久久久免费看| 欧美日韩一区二区三区视频播放| 91看片在线免费观看| 国产精品久久久久久久蜜臀| 中文字幕有码无码人妻av蜜桃| 在线精品高清中文字幕| 久久69成人| 日韩精品第1页| 成人激情免费电影网址| 日本三级小视频| 亚洲人精选亚洲人成在线| 成人在线免费av| 桥本有菜av在线| 国产成人免费xxxxxxxx| 成人午夜视频精品一区| 亚洲人成网站在线播| 日韩毛片网站| 国产 欧美 日韩 一区| 99国产欧美另类久久久精品| 国产又粗又猛又黄视频| 日韩视频免费看| 北条麻妃在线一区二区免费播放| 九九九九免费视频| 日本一区二区久久| 99热精品在线播放| 国产综合在线看| 欧州一区二区| 人妻精油按摩bd高清中文字幕| 亚洲r级在线视频| 第一页在线观看| 99视频在线免费观看| 久久久久国产精品一区三寸| 爱爱视频免费在线观看| 日韩激情av在线播放| 啪啪av大全导航福利综合导航| 日本一级黄视频| 中文字幕高清一区| 亚洲老妇色熟女老太| 国产精品成人品| 国产精品久久| 国产18无套直看片| 精品久久久三级丝袜| 欧美色网在线| 日韩精品在线中文字幕| 中文av字幕一区| 天堂a中文在线| 亚洲自拍小视频免费观看| 久久国产欧美|