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

淺談如何提高AJAX客戶端響應速度

開發(fā) 前端
AJAX 的出現(xiàn)極大的改變了 Web 應用客戶端的操作模式,它使的用戶可以在全心工作時不必頻繁的忍受那令人厭惡的頁面刷新。理論上 AJAX 技術在很大的程度上可以減少用戶操作的等待時間,同時節(jié)約網(wǎng)絡上的數(shù)據(jù)流量。而然,實際情況卻并不總是這樣。用戶時常會抱怨用了 AJAX 的系統(tǒng)響應速度反而降低了。本文將談談如何提高響應速度。

筆者從事AJAX 方面的研發(fā)多年,參與開發(fā)了目前國內(nèi)較為成熟的AJAX平臺 -dorado 。根據(jù)筆者的經(jīng)驗,導致這種結(jié)果的根本原因并不在AJAX 。很多時候系統(tǒng)響應速度的降低都是由不夠合理的界面設計和不夠高效的編程習慣造成的。下面我們就來分析幾個 AJAX 開發(fā)過程中需要時刻注意的環(huán)節(jié)。

<!-- [if !supportLists]-->n         <!-- [endif]-->合理的使用AJAX客戶端編程和遠程過程調(diào)用。

AJAX客戶端的編程主要都是基于 JavaScript 的。而 JavaScript 是一種解釋型的編程語言,它的運行效率相對于 Java 等都要稍遜一籌。同時 JavaScript 又是運行在瀏覽器這樣一個嚴格受限的環(huán)境當中。因此開發(fā)人員對于哪些邏輯可以在客戶端執(zhí)行應該有一個清醒的認識。

在實際的應用中究竟應該怎樣使用 客戶端編程,這依賴于開發(fā)人員的經(jīng)驗判斷。這里很多問題是只可意會的。由于篇幅有限,在這里我們大致歸納出下面這幾個注意事項:

<!-- [if !supportLists]-->u       <!-- [endif]-->盡可能避免頻繁的使用遠程過程調(diào)用,例如避免在循環(huán)體中使用遠程過程調(diào)用。

<!-- [if !supportLists]-->u       <!-- [endif]-->如果可能的話盡可能使用 AJAX 方式的遠程過程調(diào)用(異步方式的遠程過程調(diào)用)。

<!-- [if !supportLists]-->u       <!-- [endif]-->避免將重量級的數(shù)據(jù)操作放置在 客戶端。例如:大批量的數(shù)據(jù)復制操作、需要通過大量的數(shù)據(jù)遍歷完成的計算等。

<!-- [if !supportLists]-->n         <!-- [endif]-->改進對 DOM 對象的操作方式。

客戶端的編程中,對 DOM 對象的操作往往是最容易占用 CPU 時間的。而對于 DOM 對象的操作,不同的編程方法之間的性能差異又往往是非常大的。

以下是三段運行結(jié)果完全相同的代碼,它們的作用是在網(wǎng)頁中創(chuàng)建一個 10x1000 的表格。然而它們的運行速度卻有著天壤之別。

  1. /* 測試代碼 1 - 耗時 : 41 秒 */   
  2. var table = document.createElement("TABLE");   
  3. document.body.appendChild(table);   
  4. for(var i = 0; i < 1000; i++){   
  5.   var row = table.insertRow(-1);   
  6.   for(var j = 0; j < 10; j++){   
  7.     var cell = objRow.insertCell(-1);   
  8.       cell.innerText = "( " + i + " , " + j + " )";   
  9.   }   
  10. }   
  11. /* 測試代碼 2 - 耗時 : 7.6 秒 */   
  12. var table = document.getElementById("TABLE");   
  13. document.body.appendChild(table);   
  14. var tbody = document.createElement("TBODY");   
  15. table.appendChild(tbody);   
  16. for(var i = 0; i < 1000; i++){   
  17.   var row = document.createElement("TR");   
  18.   tbody.appendChild(row);   
  19.   for(var j = 0; j < 10; j++){   
  20.     var cell = document.createElement("TD");   
  21.       row.appendChild(cell);   
  22.       cell.innerText = "( " + i + " , " + j + " )";   
  23.   }   
  24. }   
  25. /* 測試代碼 3 - 耗時 : 1.26 秒 */   
  26. var tbody = document.createElement("TBODY");   
  27. for(var i = 0; i < 1000; i++){     
  28.   var row = document.createElement("TR");   
  29.        for(var j = 0; j < 10; j++){   
  30.     var cell = document.createElement("TD");   
  31.       cell.innerText = "( " + i + " , " + j + " )";   
  32.       row.appendChild(cell);   
  33.   }   
  34.   tbody.appendChild(row);   
  35. }   
  36. var table = document.getElementById("TABLE");   
  37. table.appendChild(tbody);   
  38. document.body.appendChild(table);  

這里的“測試代碼 1 ”和“測試代碼 2 ”之間的差別在于在創(chuàng)建表格單元時使用了不同的 API 方法。而“測試代碼 2 ”和“測試代碼 3 ” 之間的差別在于處理順序的略微不同。

“測試代碼 1 ”和“測試代碼 2 ”之間如此大的性能差別我們無從分析,目前所知的是 insertRow 和 insertCell 是 DHTML 中表格特有的 API , createElement 和 appendChild 是 W3C DOM 的原生 API 。而前者應該是對后者的封裝。不過,我們并不能因此而得出結(jié)論認為 DOM 的原生 API 總是優(yōu)于對象特有的 API 。建議大家在需要頻繁調(diào)用某一 API 時,對其性能表現(xiàn)做一些基本的測試。

“測試代碼 2 ”和“測試代碼 3 ”之間的性能差異主要來自于他們的構建順序不同。“測試代碼 2 ”的做法是首先創(chuàng)建最外層的 <TABLE> 對象,然后再在循環(huán)中依次創(chuàng)建 <TR> 和 <TD> 。而“測試代碼 3 ”的做法是首先在內(nèi)存中由內(nèi)到外的構建好整個表格,***再將它添加到網(wǎng)頁中。這樣做的目的是盡可能的減少瀏覽器重新計算頁面布局的次數(shù)。每當我們將一個對象添加到網(wǎng)頁中時,瀏覽器都會嘗試對頁面中的控件的布局進行重新計算。所以,如果我們能夠首先在內(nèi)存中將整個要構造的對象全部創(chuàng)建好,然后再一次性的添加到網(wǎng)頁中。那么,瀏覽器將只會做一次布局的重計算 。總結(jié)為一句話那就是越晚執(zhí)行 appendChild 越好。有時為了提高運行效率,我們甚至可以考慮先使用 removeChild 將已存在的控件從頁面中移除,然后構造完成后再重新將其放置回頁面當中。

<!-- [if !supportLists]-->n         <!-- [endif]-->提高字符串累加的速度

在使用 AJAX 提交信息時,我可能常常需要拼裝一些比較大的字符串通過 XmlHttp 來完成 POST 提交。盡管提交這樣大的信息的做法看起來并不優(yōu)雅,但有時我們可能不得不面對這樣的需求。那么 JavaScript 中對字符串的累加速度如何呢?我們先來做下面的這個實驗。累加一個長度為 30000 的字符串。

  1. /* 測試代碼 1 - 耗時 : 14.325 秒 */    
  2. var str = "";   
  3. for (var i = 0; i < 50000; i++) {   
  4.        str += "xxxxxx";   
  5. }  

這段代碼耗時 14.325 秒,結(jié)果并不理想。現(xiàn)在我們將代碼改為如下的形式:

  1. /* 測試代碼 2 - 耗時 : 0.359 秒 */    
  2. var str = "";   
  3. for (var i = 0; i < 100; i++) {   
  4.        var sub = "";   
  5.        for (var j = 0; j < 500; j++) {   
  6.               sub += "xxxxxx";   
  7.        }   
  8.        str += sub;   
  9. }  

這段代碼耗時 0.359 秒!同樣的結(jié)果,我們做的只是首先拼裝一些較小的字符串然后再組裝成更大的字符串。這種做法可以有效的在字符串拼裝的后期減小內(nèi)存復制的數(shù)據(jù)量。知道了這一原理之后我們還可以把上面的代碼進一步拆散以后進行測試。下面的代碼僅耗時 0.140 秒。

  1. /* 測試代碼 3 - 耗時 : 0.140 秒 */   
  2. var str = "";    
  3. for (var i1 = 0; i1 < 5; i1++) {   
  4.        var str1 = "";   
  5.        for (var i2 = 0; i2 < 10; i2++) {   
  6.               var str2 = "";   
  7.               for (var i3 = 0; i3 < 10; i3++) {   
  8.                      var str3 = "";   
  9.                      for (var i4 = 0; i4 < 10; i4++) {   
  10.                             var str4 = "";   
  11.                             for (var i5 = 0; i5 < 10; i5++) {   
  12.                                    str4 += "xxxxxx";   
  13.                             }   
  14.                             str3 += str4;   
  15.                      }   
  16.                      str2 += str3;   
  17.               }   
  18.               str1 += str2;   
  19.        }   
  20.        str += str1;     
  21. }  

不過,上面這種做法也許并不是***的!如果我們需要提交的信息是 XML 格式的(其實絕大多數(shù)情況下,我們都可以設法將要提交的信息組裝成 XML 格式),我們還能找到更高效更優(yōu)雅的方法 — 利用 DOM 對象為我們組裝字符串。下面這段代買組裝一個長度為 950015 的字符串僅須耗時 0.890 秒。

  1. /* 利用 DOM 對象組裝信息 - 耗時 : 0.890 秒 */   
  2. var xmlDoc;     
  3. if (browserType == BROWSER_IE) {   
  4.        xmlDoc = new ActiveXObject("Msxml.DOMDocument");   
  5. }   
  6. else {   
  7.        xmlDoc = document.createElement("DOM");   
  8. }   
  9. var root = xmlDoc.createElement("root");   
  10. for (var i = 0; i < 50000; i++) {   
  11.        var node = xmlDoc.createElement("data");   
  12.        if (browserType == BROWSER_IE) {   
  13.               node.text = "xxxxxx";   
  14.        }   
  15.        else {   
  16.               node.innerText = "xxxxxx";   
  17.        }   
  18.        root.appendChild(node);   
  19. }   
  20. xmlDoc.appendChild(root);   
  21. var str;   
  22. if (browserType == BROWSER_IE) {   
  23.        str = xmlDoc.xml;   
  24. }   
  25. else {   
  26.        str = xmlDoc.innerHTML;   
  27. }   
  28. <!-- [if !supportLists]-->n   

       <!-- [endif]-->避免 DOM 對象的內(nèi)存泄漏。

關于 IE 中 DOM 對象的內(nèi)存泄露是一個常常被開發(fā)人員忽略的問題。然而它帶來的后果卻是非常嚴重的!它會導致 IE 的內(nèi)存占用量持續(xù)上升,并且瀏覽器的整體運行速度明顯下降。對于一些泄露比較嚴重的網(wǎng)頁,甚至只要刷新幾次,運行速度就會降低一倍。

比較常見的內(nèi)存泄漏的模型有“ 循環(huán)引用 模型”、“ 閉包函數(shù) 模型”和“ DOM 插入順序模型” , 對于前兩種泄漏模型,我們都可以通過在網(wǎng)頁析構時解除引用的方式來避免。而對于“ DOM 插入順序模型”則需要通過改變一些慣有的編程習慣的方式來避免。

有關內(nèi)存泄漏的模型的更多介紹可以通過 Google 很快的查到,本文不做過多的闡述。不過,這里我向您推薦一個可用于查找和分析網(wǎng)頁內(nèi)存泄露的小工具 — Drip ,目前的較新版本是 0.5 ,下載地址是 http://outofhanwell.com/ieleak/index.php

<!-- [if !supportLists]-->n         <!-- [endif]-->復雜頁面的分段裝載和初始化

對系統(tǒng)當中某些確實比較復雜而又不便使用 IFrame 的界面,我們可以對其實施分段裝載。例如對于多頁標簽的界面,我們可以首先下載和初始化多頁標簽的默認頁,然后利用 AJAH ( asynchronous JavaScript and HTML )技術來異步的裝載其他標簽頁中的內(nèi)容。這樣就能保證界面可以在***時間首先展現(xiàn)給用戶。把整個復雜界面的裝載過程分散到用戶的操作過程當中。

<!-- [if !supportLists]-->n         <!-- [endif]-->利用 GZIP 壓縮網(wǎng)絡流量。

除了上面提到的這些代碼級的改良之外,我們還可以利用 GZIP 來有效的降低網(wǎng)絡流量。目前常見的主流瀏覽器已經(jīng)全部支持 GZIP 算法,我們往往只需要編寫少量的代碼就可以支持 GZIP 了。例如在 J2EE 中我們可以在 Filter 中通過下面的代碼來判斷客戶端瀏覽器是否支持 GZIP 算法,然后根據(jù)需要利用 java.util.zip.GZIPOutputStream 來實現(xiàn) GZIP 的輸出。

  1. /* 判斷瀏覽器對 GZIP 支持方式的代碼 */   
  2. private static String getGZIPEncoding(HttpServletRequest request) {   
  3.   String acceptEncoding = request.getHeader("Accept-Encoding");   
  4.   if (acceptEncoding == null) return null;   
  5.   acceptEncodingacceptEncoding = acceptEncoding.toLowerCase();   
  6.   if (acceptEncoding.indexOf("x-gzip") >= 0) return "x-gzip";   
  7.   if (acceptEncoding.indexOf("gzip") >= 0) return "gzip";   
  8.   return null;   

一般而言, GZIP 對于 HTML 、 JSP 的壓縮比可以達到 80% 左右,而它造成的服務端和客戶端的性能損耗幾乎是可以忽略的。結(jié)合其他因素,支持 GZIP 的網(wǎng)站有可能為我們節(jié)約 50% 的網(wǎng)絡流量。因此 GZIP 的使用可以為那些網(wǎng)絡環(huán)境不是特別好的應用帶來顯著的性能提升。使用 Http 的監(jiān)視工具 Fiddler 可以方便的檢測出網(wǎng)頁在使用 GZIP 前后的通訊數(shù)據(jù)量。 Fiddler 的下載地址是 http://www.fiddlertool.com/fiddler/

關于 Web 應用的性能優(yōu)化其實是一個非常大的話題。本文由于篇幅有限,只能涉及其中的幾個細節(jié),并且也無法將這些細節(jié)的優(yōu)化方式全面的展現(xiàn)給大家。期望本文能夠引起大家對 Web 應用尤其是客戶端性能優(yōu)化的充分重視。畢竟服務端編程技巧已為大家熟知多年,在服務端挖掘性能的潛力已經(jīng)不大了。而在客戶端的方法改進往往能夠得到令人驚奇的性能提升。

【編輯推薦】

  1. JSF和Spring的集成
  2. JSF中使用自定義Navigation
  3. 簡單介紹JSF應用
  4. JSF動態(tài)生成固定表頭和行標的DataTable
  5. JSF和JSP是一對新的搭檔
責任編輯:彭凡 來源: JavaEye
相關推薦

2011-08-29 17:16:29

Ubuntu

2011-05-30 13:28:00

PHP

2010-07-22 12:24:31

Telnet客戶端

2025-02-19 13:00:00

移動端觸摸事件響應速度JavaScrip

2012-11-27 11:14:11

Firefox

2009-07-24 17:31:56

ASP.NET AJA

2014-03-31 16:15:47

移動應用優(yōu)化

2024-08-19 09:31:37

Prefetch列表開發(fā)

2022-06-13 09:45:51

Hook技術移動應用響應速度

2019-12-09 09:34:47

緩存響應數(shù)據(jù)

2011-05-18 09:45:57

Rails

2011-12-13 17:31:07

2009-08-21 15:54:40

服務端與客戶端

2010-12-31 14:23:57

Exchange Se

2013-03-13 10:51:44

瘦客戶端VDI

2009-03-24 10:04:03

GrailsAjaxJava

2009-06-16 15:04:14

JSP頁面響應速度

2011-03-21 09:34:48

SET選項客戶端靈活性

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端
點贊
收藏

51CTO技術棧公眾號

日韩成人在线看| 免费**毛片在线| 男女av一区三区二区色多| 亚洲少妇激情视频| 热久久久久久久久| h片在线播放| 成人av综合一区| 国产精品高潮呻吟久久av野狼 | 日韩一区二区三区高清在线观看| 亚洲成在人线免费| 欧美日韩高清免费| 99国产精品久久久久99打野战| 91久久午夜| 日日噜噜噜夜夜爽亚洲精品 | 另类美女黄大片| 内射中出日韩无国产剧情| 日本久久久久| 色综合天天综合在线视频| 黄色免费高清视频| 免费动漫网站在线观看| 高清不卡一区二区在线| 国产精品福利网| 日本中文字幕免费观看| 午夜影院欧美| 亚洲色图色老头| 在线观看成人动漫| 麻豆久久一区| 欧美精选午夜久久久乱码6080| 国产精品网站免费| av在线网址观看| 国产精品美女久久久久aⅴ国产馆| 国产尤物91| 精品国产无码AV| 看国产成人h片视频| 国产99视频在线观看| 国产无遮挡又黄又爽又色| 亚洲欧美色图| 久久激情视频久久| 无码人中文字幕| 国产在视频线精品视频www666| 亚洲高清一区二| 国产伦理在线观看| 欧美1区2区3| 欧美精品自拍偷拍| 狠狠热免费视频| 偷拍中文亚洲欧美动漫| 精品毛片三在线观看| 男人添女荫道口图片| 色爱综合区网| 亚洲一二三级电影| 国产玉足脚交久久欧美| 成人福利影视| 午夜国产精品一区| www国产精品内射老熟女| a级片免费在线观看| 亚洲国产精品一区二区久久 | 中文字幕中文字幕在线十八区| 中文字幕在线不卡国产视频| 亚洲高清不卡一区| 97电影在线看视频| 欧美激情一区在线观看| 午夜精品一区二区在线观看| av大片在线观看| 国产精品情趣视频| 亚洲视频sss| 黄色精品在线观看| 亚洲乱码日产精品bd| 天堂а√在线中文在线| 牛牛在线精品视频| 午夜视频在线观看一区二区三区| 欧美日韩黄色一级片| 手机在线观看av| 欧美在线免费观看亚洲| 爆乳熟妇一区二区三区霸乳| 欧美一区二区三区婷婷| 日韩一区二区三区电影在线观看| 国产麻豆剧传媒精品国产| 国产色噜噜噜91在线精品| 国产丝袜一区二区| 337人体粉嫩噜噜噜| 亚洲激情中文在线| 久久久亚洲精选| 天堂网中文字幕| 全部av―极品视觉盛宴亚洲| 亚洲free性xxxx护士白浆| 日韩一级片免费在线观看| 久久久久综合网| 400部精品国偷自产在线观看| 大香伊人久久| 欧美天堂亚洲电影院在线播放| 8x8x成人免费视频| 超碰97久久| 尤物九九久久国产精品的特点| 黄色精品视频在线观看| 亚洲高清成人| 国产精品视频免费在线观看| 性猛交xxxx乱大交孕妇印度| 久久久久久亚洲综合影院红桃| 亚洲二区三区四区| sqte在线播放| 7777精品伊人久久久大香线蕉超级流畅 | 日韩激情av在线播放| 极品蜜桃臀肥臀-x88av| 亚洲无线视频| 国产免费久久av| 日韩一卡二卡在线| 亚洲视频一区二区在线| 337p粉嫩大胆噜噜噜鲁| 欧美成人家庭影院| 日韩电影第一页| 黄色录像二级片| 久久成人亚洲| 96久久精品| 日p在线观看| 日韩欧美精品中文字幕| 极品白嫩的小少妇| 91欧美大片| 国产成人精品在线视频| 黄色一级a毛片| 一区二区三区在线视频免费| 亚洲一区二区蜜桃| 亚洲女娇小黑人粗硬| 欧美黄色免费网站| 国产精品欧美亚洲| 中文字幕电影一区| 一本久道中文无码字幕av| julia中文字幕一区二区99在线| 中文字幕亚洲色图| 日本免费在线观看视频| 成人性色生活片免费看爆迷你毛片| 亚洲一区三区视频在线观看| 欧美黄色网页| 日韩精品视频在线观看免费| 久久婷婷一区二区| 国产精品影音先锋| 影音先锋男人的网站| 国产精品黄色片| 亚洲天堂成人在线| 香蕉污视频在线观看| 久久综合成人精品亚洲另类欧美 | 国产一区二区美女| 亚洲午夜精品一区二区| 亚洲a∨精品一区二区三区导航| 日韩电影第一页| 久久久久久91亚洲精品中文字幕| 成年人网站91| 精品久久一二三| 欧亚精品一区| 欧美一区二区视频97| 视频二区在线| 色综合 综合色| 欧洲美一区二区三区亚洲| 久久精品三级| 日韩一区二区三区资源| 成人国产精品一区二区免费麻豆| 综合av色偷偷网| 91丨九色丨蝌蚪丨对白| 综合在线观看色| 特级黄色片视频| 亚洲性视频h| 久久www免费人成精品| 涩涩视频在线播放| 国产亚洲人成网站在线观看| 337p粉嫩色噜噜噜大肥臀| 欧美国产激情一区二区三区蜜月| 一区二区三区视频在线观看免费| 国产尤物久久久| 成人黄色av网站| 欧美人体视频xxxxx| 亚洲成人av在线播放| 男女啊啊啊视频| 国产无人区一区二区三区| 狠狠躁狠狠躁视频专区| 中文无码久久精品| 国产一区免费在线观看| 欧美色网在线| 久久天天躁狠狠躁夜夜躁| 亚洲欧美黄色片| 色呦呦国产精品| 糖心vlog免费在线观看 | 高清av免费一区中文字幕| caoprom在线| 中文字幕一区电影| 亚洲av无码乱码在线观看性色| 五月天国产精品| www亚洲色图| 国产成人精品亚洲日本在线桃色| 好吊妞无缓冲视频观看| 成人羞羞网站入口| 国产欧美一区二区三区另类精品 | 欧美日韩成人在线| 久久成人国产精品入口| 91免费视频观看| 一起操在线视频| 西西裸体人体做爰大胆久久久| 亚洲欧美国产不卡| 国产精品白浆| 国产欧美一区二区三区久久人妖| 大黄网站在线观看| 日韩在线不卡视频| 视频一区二区三区在线看免费看| 91精品国产乱| 日韩一级在线视频| 亚洲一区二区三区四区在线观看| 免费看裸体网站| 成人av手机在线观看| 无尽裸体动漫2d在线观看| 99精品福利视频| 在线观看三级网站| 精品视频亚洲| 久久久水蜜桃| 视频一区日韩精品| 国产精品香蕉国产| 欧美粗大gay| 海角国产乱辈乱精品视频| 91caoporn在线| 亚洲色图国产精品| 午夜在线视频观看| 精品国产麻豆免费人成网站| 中文字幕在线视频免费| 欧美午夜激情小视频| 免费一级肉体全黄毛片| 中文字幕日韩av资源站| 亚洲午夜精品久久久久久高潮| 成人激情视频网站| 中文字幕在线视频一区二区| 久久精品国产精品亚洲综合| 已婚少妇美妙人妻系列| 一道本一区二区| 69sex久久精品国产麻豆| 中文字幕一区二区三区在线视频 | 伊人久久综合| 神马午夜伦理影院| 91精品综合久久久久久久久久久 | 第一视频专区在线| 亚洲精品中文字幕有码专区| 蜜臀av免费在线观看| 日韩免费福利电影在线观看| 99热这里只有精品66| 3d动漫精品啪啪1区2区免费| 国产精品久久久久毛片| 欧美日韩第一区日日骚| 国产一区二区在线不卡| 欧美日本不卡视频| 国产剧情精品在线| 在线不卡的av| 国产精品视频一二区| 欧美精品久久99| 97国产精品久久久| 欧美精品一卡二卡| 国产美女www爽爽爽视频| 欧美丰满嫩嫩电影| a天堂在线视频| 欧美刺激午夜性久久久久久久| www.99视频| 欧美mv日韩mv国产网站app| 亚洲国产综合一区| 精品国产髙清在线看国产毛片| 黄色福利在线观看| 亚洲精品久久久久久久久久久| 天堂av在线播放| 国产亚洲视频在线观看| 国产精品二线| xxxxx成人.com| 色老头在线观看| 8050国产精品久久久久久| 欧美人体一区二区三区| 国产精品丝袜久久久久久不卡| 涩涩涩久久久成人精品| 97碰碰视频| 丝袜av一区| 亚洲精品欧洲精品| 午夜久久tv| 人妻熟妇乱又伦精品视频| 日韩av一区二区三区| 色综合五月婷婷| www.亚洲在线| 欧美 日韩 国产 成人 在线观看| 国产精品久久久久久亚洲伦| 欧美黑吊大战白妞| 天天综合日日夜夜精品| 日本丰满少妇做爰爽爽| 日韩一级高清毛片| 神马精品久久| 精品国内亚洲在观看18黄 | 又大又长粗又爽又黄少妇视频| 91免费视频网| √天堂中文官网8在线| 五月婷婷激情综合网| 艳妇乳肉豪妇荡乳av无码福利| 欧美一区二区三区人| 欧美一级一区二区三区| 夜夜嗨av色综合久久久综合网 | 欧洲激情综合| 欧美国产视频一区| 日韩精品欧美精品| 一级黄色电影片| 国产精品午夜在线观看| 国产无套在线观看| 欧美高清一级片在线| 午夜视频www| 插插插亚洲综合网| 欧美成人h版| 国产精品一区二区免费| 成人综合一区| 国产91对白刺激露脸在线观看| 国产在线视视频有精品| 熟女高潮一区二区三区| 亚洲一区视频在线观看视频| 亚洲一区二区色| 亚洲欧美三级在线| 国产高清在线a视频大全| 国产欧美日韩免费看aⅴ视频| 午夜a一级毛片亚洲欧洲| 日韩中文在线字幕| 欧美96一区二区免费视频| 中文字幕无码人妻少妇免费| 亚洲欧洲av另类| 亚洲精品国产精品国自产网站按摩| 精品sm在线观看| 操你啦视频在线| 成人黄色免费网站在线观看| 狠狠做六月爱婷婷综合aⅴ| 国产乱子伦农村叉叉叉| 成人中文字幕合集| 欧美成人免费看| 日韩一区二区视频在线观看| 91啦中文在线| 国产成人久久久精品一区| 天天躁日日躁狠狠躁欧美巨大小说 | 国产精品久久久久福利| 婷婷成人在线| 男人操女人免费软件| 99re免费视频精品全部| 男人天堂中文字幕| 精品卡一卡二卡三卡四在线| av网站大全在线| 亚洲精品免费在线视频| 婷婷综合激情| 久久久精品高清| ...中文天堂在线一区| 在线观看免费黄色小视频| 国产亚洲视频在线观看| 国产精品久久久久久久久久齐齐| 日韩成人在线资源| 日本va欧美va精品发布| 国产aⅴ激情无码久久久无码| 日韩欧美在线视频日韩欧美在线视频 | 欧美国产精品一二三| 欧美一级日韩不卡播放免费| a在线免费观看| 99国产在线视频| 亚洲激情成人| 亚洲一区二区三区无码久久| 精品动漫一区二区三区| 欧美香蕉爽爽人人爽| 国产成人精品视频在线观看| 精品国产1区| 波多野结衣xxxx| 亚洲视频在线一区观看| 国产熟女一区二区三区五月婷| 欧美二区在线播放| 精品亚洲自拍| www日韩视频| 中文字幕一区二区三区在线观看| 国产日韩一级片| 久久久久久噜噜噜久久久精品| 精品少妇3p| 黑森林精品导航| 一区二区三区国产豹纹内裤在线| 成人无码一区二区三区| 欧美在线一级视频| 日韩一区亚洲二区| 免费在线观看日韩av| 粉嫩av一区二区三区免费野| 在线中文资源天堂| 亚洲自拍av在线| 国产麻豆综合| 长河落日免费高清观看| 欧美videofree性高清杂交| 五月天国产在线| 一区二区三区|亚洲午夜| www.日本xxxx| 久久精品国产在热久久| 日韩影院一区二区| 精品小视频在线| 未满十八勿进黄网站一区不卡| 久久久天堂国产精品| 91美女福利视频| 国产伦精品一区二区三区四区| 欧美精品激情在线| 欧美系列电影免费观看| 韩国三级在线看| 欧洲一区二区三区免费视频| 午夜影院免费在线| 欧美影视一区二区| 国产成人午夜99999| 狠狠狠狠狠狠狠| 久久久久久久久久久国产| 欧美色婷婷久久99精品红桃|