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

JavaScript 啟動性能瓶頸分析與解決方案

開發 前端
在 Web 開發中,隨著需求的增加與代碼庫的擴張,我們最終發布的 Web 頁面也逐漸膨脹。不過這種膨脹遠不止意味著占據更多的傳輸帶寬,其還意味著用戶瀏覽網頁時可能更差勁的性能體驗。瀏覽器在下載完某個頁面依賴的腳本之后,其還需要經過語法分析、解釋與運行這些步驟。

[[183295]]

在 Web 開發中,隨著需求的增加與代碼庫的擴張,我們最終發布的 Web 頁面也逐漸膨脹。不過這種膨脹遠不止意味著占據更多的傳輸帶寬,其還意味著用戶瀏覽網頁時可能更差勁的性能體驗。瀏覽器在下載完某個頁面依賴的腳本之后,其還需要經過語法分析、解釋與運行這些步驟。而本文則會深入分析瀏覽器對于 JavaScript 的這些處理流程,挖掘出那些影響你應用啟動時間的罪魁禍首,并且根據我個人的經驗提出相對應的解決方案。回顧過去,我們還沒有專門地考慮過如何去優化 JavaScript 解析/編譯這些步驟;我們預想中的是解析器在發現<script>標簽后會瞬時完成解析操作,不過這很明顯是癡人說夢。下圖是對于 V8 引擎工作原理的概述:

下面我們深入其中的關鍵步驟進行分析。

到底是什么拖慢了我們應用的啟動時間?

在啟動階段,語法分析,編譯與腳本執行占據了 JavaScript 引擎運行的絕大部分時間。換言之,這些過程造成的延遲會真實地反應到用戶可交互時延上;譬如用戶已經看到了某個按鈕,但是要好幾秒之后才能真正地去點擊操作,這一點會大大影響用戶體驗。

上圖是我們使用 Chrome Canary 內置的 V8 RunTime Call Stats 對于某個網站的分析結果;需要注意的是桌面瀏覽器中語法解析與編譯占用的時間還是蠻長的,而在移動端中占用的時間則更長。實際上,對于 Facebook, Wikipedia, Reddit 這些大型網站中語法解析與編譯所占的時間也不容忽視:

上圖中的粉色區域表示花費在 V8 與 Blink's C++ 中的時間,而橙色和黃色分別表示語法解析與編譯的時間占比。Facebook 的 Sebastian Markbage 與 Google 的 Rob Wormald 也都在 Twitter 發文表示過 JavaScript 的語法解析時間過長已經成為了不可忽視的問題,后者還表示這也是 Angular 啟動時主要的消耗之一。

隨著移動端浪潮的涌來,我們不得不面對一個殘酷的事實:移動端對于相同包體的解析與編譯過程要花費相當于桌面瀏覽器2~5倍的時間。當然,對于高配的 iPhone 或者 Pixel 這樣的手機相較于 Moto G4 這樣的中配手機表現會好很多;這一點提醒我們在測試的時候不能僅用身邊那些高配的手機,而應該中高低配兼顧:

上圖是部分桌面瀏覽器與移動端瀏覽器對于 1MB 的 JavaScript 包體進行解析的時間對比,顯而易見的可以發現不同配置的移動端手機之間的巨大差異。當我們應用包體已經非常巨大的時候,使用一些現代的打包技巧,譬如代碼分割,TreeShaking,Service Workder 緩存等等會對啟動時間有很大的影響。另一個角度來看,即使是小模塊,你代碼寫的很糟或者使用了很糟的依賴庫都會導致你的主線程花費大量的時間在編譯或者冗余的函數調用中。我們必須要清醒地認識到全面評測以挖掘出真正性能瓶頸的重要性。

JavaScript 語法解析與編譯是否成為了大部分網站的瓶頸?

我曾不止一次聽到有人說,我又不是 Facebook,你說的 JavaScript 語法解析與編譯到

底會對其他網站造成什么樣的影響呢?對于這個問題我也很好奇,于是我花費了兩個月的時間對于超過 6000 個網站進行分析;這些網站囊括了 React,Angular,Ember,Vue 這些流行的框架或者庫。大部分的測試是基于 WebPageTest 進行的,因此你可以很方便地重現這些測試結果。光纖接入的桌面瀏覽器大概需要 8 秒的時間才能允許用戶交互,而 3G 環境下的 Moto G4 大概需要 16 秒 才能允許用戶交互。

大部分應用在桌面瀏覽器中會耗費約 4 秒的時間進行 JavaScript 啟動階段(語法解析、編譯、執行):

 

而在移動端瀏覽器中,大概要花費額外 36% 的時間來進行語法解析:

另外,統計顯示并不是所有的網站都甩給用戶一個龐大的 JS 包體,用戶下載的經過 Gzip 壓縮的平均包體大小是 410KB,這一點與 HTTPArchive 之前發布的 420KB 的數據基本一致。不過最差勁的網站則是直接甩了 10MB 的腳本給用戶,簡直可怕。

通過上面的統計我們可以發現,包體體積固然重要,但是其并非唯一因素,語法解析與編譯的耗時也不一定隨著包體體積的增長而線性增長。總體而言小的 JavaScript 包體是會加載地更快(忽略瀏覽器、設備與網絡連接的差異),但是同樣 200KB 的大小,不同開發者的包體在語法解析、編譯上的時間卻是天差地別,不可同日而語。

現代 JavaScript 語法解析 & 編譯性能評測

Chrome DevTools

打開 Timeline( Performance panel ) > Bottom-Up/Call Tree/Event Log 就會顯示出當前網站在語法解析/編譯上的時間占比。如果你希望得到更完整的信息,那么可以打開 V8 的 Runtime Call Stats。在 Canary 中,其位于 Timeline 的 Experims > V8 Runtime Call Stats 下。

Chrome Tracing

打開 about:tracing 頁面,Chrome 提供的底層的追蹤工具允許我們使用disabled-by-default-v8.runtime_stats來深度了解 V8 的時間消耗情況。V8 也提供了詳細的指南來介紹如何使用這個功能。

WebPageTest

WebPageTest 中 Processing Breakdown 頁面在我們啟用 Chrome > Capture Dev Tools Timeline 時會自動記錄 V8 編譯、EvaluateScript 以及 FunctionCall 的時間。我們同樣可以通過指明disabled-by-default-v8.runtime_stats的方式來啟用 Runtime Call Stats。

更多使用說明參考我的gist點擊預覽。

User Timing

我們還可以使用 Nolan Lawson 推薦的User Timing API來評估語法解析的時間。不過這種方式可能會受 V8 預解析過程的影響,我們可以借鑒 Nolan 在 optimize-js 評測中的方式,在腳本的尾部添加隨機字符串來解決這個問題。我基于 Google Analytics 使用相似的方式來評估真實用戶與設備訪問網站時候的解析時間。

DeviceTiming

Etsy 的 DeviceTiming 工具能夠模擬某些受限環境來評估頁面的語法解析與執行時間。其將本地腳本包裹在了某個儀表工具代碼內從而使我們的頁面能夠模擬從不同的設備中訪問。可以閱讀 Daniel Espeset 的Benchmarking JS Parsing and Execution on Mobile Devices 一文來了解更詳細的使用方式。

我們可以做些什么以降低 JavaScript 的解析時間?

  • 減少 JavaScript 包體體積。我們在上文中也提及,更小的包體往往意味著更少的解析工作量,也就能降低瀏覽器在解析與編譯階段的時間消耗。
  • 使用代碼分割工具來按需傳遞代碼與懶加載剩余模塊。這可能是最佳的方式了,類似于PRPL這樣的模式鼓勵基于路由的分組,目前被 Flipkart, Housing.com 與 Twitter 廣泛使用。
  • Script streaming: 過去 V8 鼓勵開發者使用async/defer來基于script streaming實現 10-20% 的性能提升。這個技術會允許 HTML 解析器將相應的腳本加載任務分配給專門的 script streaming 線程,從而避免阻塞文檔解析。V8 推薦盡早加載較大的模塊,畢竟我們只有一個 streamer 線程。
  • 評估我們依賴的解析消耗。我們應該盡可能地選擇具有相同功能但是加載地更快的依賴,譬如使用 Preact 或者 Inferno 來代替 React,二者相較于 React 體積更小具有更少的語法解析與編譯時間。Paul Lewis 在最近的一篇文章中也討論了框架啟動的代價,與 Sebastian Markbage 的說法不謀而合:最好地評測某個框架啟動消耗的方式就是先渲染一個界面,然后刪除,最后進行重新渲染。第一次渲染的過程會包含了分析與編譯,通過對比就能發現該框架的啟動消耗。

如果你的 JavaScript 框架支持 AOT(ahead-of-time)編譯模式,那么能夠有效地減少解析與編譯的時間。Angular 應用就受益于這種模式:

現代瀏覽器是如何提高解析與編譯速度的?

不用灰心,你并不是唯一糾結于如何提升啟動時間的人,我們 V8 團隊也一直在努力。我們發現之前的某個評測工具 Octane 是個不錯的對于真實場景的模擬,它在微型框架與冷啟動方面很符合真實的用戶習慣。而基于這些工具,V8 團隊在過去的工作中也實現了大約 25% 的啟動性能提升:

本部分我們就會對過去幾年中我們使用的提升語法解析與編譯時間的技巧進行闡述。

代碼緩存

Chrome 42 開始引入了所謂的代碼緩存的概念,為我們提供了一種存放編譯后的代碼副本的機制,從而當用戶二次訪問該頁面時可以避免腳本抓取、解析與編譯這些步驟。除以之外,我們還發現在重復訪問的時候這種機制還能避免 40% 左右的編譯時間,這里我會深入介紹一些內容:

  • 代碼緩存會對于那些在 72 小時之內重復執行的腳本起作用。
  • 對于 Service Worker 中的腳本,代碼緩存同樣對 72 小時之內的腳本起作用。
  • 對于利用 Service Worker 緩存在 Cache Storage 中的腳本,代碼緩存能在腳本首次執行的時候起作用。

總而言之,對于主動緩存的 JavaScript 代碼,最多在第三次調用的時候其能夠跳過語法分析與編譯的步驟。我們可以通過chrome://flags/#v8-cache-strategies-for-cache-storage來查看其中的差異,也可以設置 js-flags=profile-deserialization運行 Chrome 來查看代碼是否加載自代碼緩存。不過需要注意的是,代碼緩存機制僅會緩存那些經過編譯的代碼,主要是指那些頂層的往往用于設置全局變量的代碼。而對于類似于函數定義這樣懶編譯的代碼并不會被緩存,不過 IIFE 同樣被包含在了 V8 中,因此這些函數也是可以被緩存的。

Script Streaming

Script Streaming允許在后臺線程中對異步腳本執行解析操作,可以對于頁面加載時間有大概 10% 的提升。上文也提到過,這個機制同樣會對同步腳本起作用。

這個特性倒是第一次提及,因此 V8 會允許所有的腳本,即使阻塞型的<script src=''>腳本也可以由后臺線程進行解析。不過缺陷就是目前僅有一個 streaming 后臺線程存在,因此我們建議首先解析大的、關鍵性的腳本。在實踐中,我們建議將<script defer>添加到<head>塊內,這樣瀏覽器引擎就能夠盡早地發現需要解析的腳本,然后將其分配給后臺線程進行處理。我們也可以查看 DevTools Timeline 來確定腳本是否被后臺解析,特別是當你存在某個關鍵性腳本需要解析的時候,更需要確定該腳本是由 streaming 線程解析的。

語法解析 & 編譯優化

我們同樣致力于打造更輕量級、更快的解析器,目前 V8 主線程中最大的瓶頸在于所謂的非線性解析消耗。譬如我們有如下的代碼片:

  1. (function (global, module) { … })(this, function module() { my functions }) 

V8 并不知道我們編譯主腳本的時候是否需要module這個模塊,因此我們會暫時放棄編譯它。而當我們打算編譯module時,我們需要重分析所有的內部函數。這也就是所謂的 V8 解析時間非線性的原因,任何一個處于 N 層深度的函數都有可能被重新分析 N 次。V8 已經能夠在首次編譯的時候搜集所有內部函數的信息,因此在未來的編譯過程中 V8 會忽略所有的內部函數。對于上面這種module形式的函數會是很大的性能提升,建議閱讀The V8 Parser(s) — Design, Challenges, and Parsing JavaScript Better來獲取更多內容。V8 同樣在尋找合適的分流機制以保證啟動時能在后臺線程中執行 JavaScript 編譯過程。

預編譯 JavaScript?

每隔幾年就有人提出引擎應該提供一些處理預編譯腳本的機制,換言之,開發者可以使用構建工具或者其他服務端工具將腳本轉化為字節碼,然后瀏覽器直接運行這些字節碼即可。從我個人觀點來看,直接傳送字節碼意味著更大的包體,勢必會增加加載時間;并且我們需要去對代碼進行簽名以保證能夠安全運行。目前我們對于 V8 的定位是盡可能地避免上文所說的內部重分析以提高啟動時間,而預編譯則會帶來額外的風險。不過我們歡迎大家一起來討論這個問題,雖然 V8 目前專注于提升編譯效率以及推廣利用 Service Worker 緩存腳本代碼來提升啟動效率。我們在 BlinkOn7 上與 Facebook 以及 Akamai 也討論過預編譯相關內容點擊預覽。

Optimize JS 優化

類似于 V8 這樣的 JavaScript 引擎在進行完整的解析之前會對腳本中的大部分函數進行預解析,這主要是考慮到大部分頁面中包含的 JavaScript 函數并不會立刻被執行。

預編譯能夠通過只處理那些瀏覽器運行所需要的最小函數集合來提升啟動時間,不過這種機制在 IIFE 面前卻反而降低了效率。盡管引擎希望避免對這些函數進行預處理,但是遠不如optimize-js這樣的庫有作用。optimize-js 會在引擎之前對于腳本進行處理,對于那些立即執行的函數插入圓括號從而保證更快速地執行。這種預處理對于 Browserify, Webpack 生成包體這樣包含了大量即刻執行的小模塊起到了非常不錯的優化效果。盡管這種小技巧并非 V8 所希望使用的,但是在當前階段不得不引入相應的優化機制。

總結

啟動階段的性能至關重要,緩慢的解析、編譯與執行時間可能成為你網頁性能的瓶頸所在。我們應該評估頁面在這個階段的時間占比并且選擇合適的方式來優化。我們也會繼續致力于提升 V8 的啟動性能,盡我所能!

責任編輯:武曉燕 來源: segmentfault
相關推薦

2020-09-09 10:00:41

JavaScript前端瓶頸

2025-07-31 01:55:00

await性能流式格式

2011-05-04 16:33:09

游戲銷售Android Mar游戲

2024-11-25 07:00:00

2009-08-03 18:06:28

JS性能問題

2017-08-01 17:01:49

IOT梯聯網AWS

2020-03-23 14:35:28

前端架構應用程序

2025-06-10 01:55:00

代碼Promise

2009-07-31 11:41:12

光纖連接數據中心

2012-02-07 17:33:07

2009-06-10 22:13:55

JavaScriptExcel打印

2011-09-27 09:42:01

Linux系統

2010-10-08 13:27:51

IE6pngJavaScript

2012-11-01 11:29:29

2017-06-05 16:16:11

技術業務性

2023-06-09 12:59:52

Python性能分析

2024-02-02 15:21:08

工具頁面性能

2022-04-29 15:24:53

Redis存儲慢查詢

2019-10-31 11:50:19

MySQL數據庫Windows

2011-07-05 15:39:50

FTTH
點贊
收藏

51CTO技術棧公眾號

国产韩国精品一区二区三区| 国内自拍亚洲| 26uuu亚洲综合色欧美| 国产91精品久久久久| 免费看黄色的视频| 国产专区精品| 欧美日韩一区二区免费视频| 亚洲一二区在线| 亚洲乱色熟女一区二区三区| 久久先锋影音| 欧美激情久久久久| 精品成人无码一区二区三区| 亚洲一区二区三区四区电影| 色婷婷av一区二区三区之一色屋| gogogo免费高清日本写真| 手机看片福利在线| 国内精品免费**视频| 欧美中文字幕在线视频| 日韩女优一区二区| 国产一区二区三区电影在线观看| 日韩一区二区三区av| 黄色国产小视频| 91超碰在线| 亚洲欧洲综合另类| 欧美高清视频一区| 刘亦菲毛片一区二区三区| 六月丁香婷婷久久| 国产精品久久久久久久电影| 国产性xxxx高清| 欧美三级特黄| 久久精品欧美视频| 亚洲色图 激情小说| 日韩三区视频| 亚洲国产精品大全| 国产69视频在线观看| 国产一区二区视频在线看| 欧美日韩一级片网站| 日韩欧美精品在线观看视频| av成人影院在线| 伊人婷婷欧美激情| 国产一级黄色录像片| 成年人在线观看网站| 久久综合狠狠综合久久综合88| 亚洲精品欧美日韩| 国产巨乳在线观看| 久久黄色级2电影| 国产精品视频导航| 欧美男人天堂网| 日韩国产一区二| 国产成人福利网站| 亚洲不卡在线视频| 老司机精品视频网站| 国产精品9999| 国产精品成人无码| 奇米影视一区二区三区小说| 国产精品第二页| 中文字幕乱码在线观看| 日本午夜精品视频在线观看| 国产精品久久久久aaaa九色| 欧美激情一区二区三区免费观看| 日韩高清不卡一区二区三区| 国产精品成人播放| 国产偷人爽久久久久久老妇app| 久热精品在线| 国产精品人成电影在线观看| 中文字幕永久在线观看| 激情欧美一区二区| 99精彩视频| 少妇又色又爽又黄的视频| 99久久99精品久久久久久 | 亚洲国产中文在线| 精品国产亚洲在线| 丰满少妇在线观看资源站| 女人丝袜激情亚洲| 日韩在线免费视频| 麻豆91精品91久久久| 亚洲视频播放| 国产精品免费久久久| 国产乱码精品一区二区三区精东| 国产电影精品久久禁18| 国产一区精品在线| 国产大片在线免费观看| 亚洲乱码国产乱码精品精98午夜| 男人天堂av片| 成人影院av| 911精品产国品一二三产区| 国产精品亚洲一区二区无码| 米奇777超碰欧美日韩亚洲| 最新国产成人av网站网址麻豆| 性色av无码久久一区二区三区| 在线播放一区| 国产精品情侣自拍| 欧美熟妇另类久久久久久不卡| 91免费小视频| 最新欧美日韩亚洲| 韩国精品一区| 91.成人天堂一区| 亚洲精品中文字幕在线播放| 性欧美欧美巨大69| 欧洲日韩成人av| www夜片内射视频日韩精品成人| 26uuu成人网一区二区三区| 在线播放豆国产99亚洲| 国产精品一区二区日韩| 欧美日韩国产精品成人| 黄色性生活一级片| 91精品啪在线观看国产18| 2021久久精品国产99国产精品| 97久久人国产精品婷婷| 久久亚洲免费视频| 国产制服91一区二区三区制服| 婷婷六月国产精品久久不卡| 日韩三级中文字幕| 欧美亚洲色综久久精品国产| 1000部精品久久久久久久久| 成人免费观看网址| av资源在线观看免费高清| 亚洲不卡一区二区三区| 日本黄色一级网站| 成人在线一区| 欧美最近摘花xxxx摘花| 超碰免费在线97| 国产亚洲人成a在线v网站| 亚洲少妇30p| 欧美日韩在线免费播放| 欧美调教在线| 欧美丰满少妇xxxx| 国产又粗又长视频| 国产精品久久国产精麻豆99网站| 美女福利视频在线| 琪琪久久久久日韩精品| 欧美激情亚洲一区| 性欧美18一19性猛交| 国产精品色在线观看| www.日日操| 国产成人ay| 欧美亚洲国产视频| 污视频在线免费| 亚洲高清在线精品| 99免费观看视频| 亚洲特色特黄| 国产精品一区二区免费| 手机在线免费观看av| 日韩午夜激情电影| 免费在线视频观看| 粉嫩一区二区三区性色av| 日韩一级片一区二区| 日韩精品一区国产| 欧美伦理91i| 亚洲av永久无码国产精品久久| 亚洲三级电影网站| 亚洲天堂一区二区在线观看| 欧美一区二区| 国产成人精品日本亚洲11| www在线看| 亚洲精品第一国产综合精品| 日韩熟女精品一区二区三区| 成人免费高清视频| 波多野结衣乳巨码无在线| 婷婷成人在线| 国产精品久久久久久久久粉嫩av| 成人高清网站| 欧美精品成人一区二区三区四区| 99热这里只有精品4| 极品少妇xxxx精品少妇偷拍| xxxxxx在线观看| 国产精品中文字幕制服诱惑| 久久久久久有精品国产| 暖暖视频在线免费观看| 欧美在线|欧美| 国产精品国产精品88| 国产91丝袜在线播放九色| 大j8黑人w巨大888a片| 久久爱www成人| 国产精品一区久久久| 91在线中字| 日韩精品在线观| 中文字幕久久网| 亚洲一二三区视频在线观看| 亚洲最大成人网站| 经典一区二区三区| 国内精品视频一区二区三区| 精品国产日韩欧美| 亚洲bt天天射| 中文字幕乱码在线播放| 日韩中文娱乐网| 理论片中文字幕| 欧美三级在线播放| 久久亚洲av午夜福利精品一区| 久久久久综合网| 视频二区在线播放| 在线日韩中文| 超碰在线免费观看97| 欧美激情99| 成人亲热视频网站| 亚洲国产福利| 欧美成人午夜免费视在线看片 | 日本少妇在线观看| 国产精品久久久久久久久晋中 | 国产又粗又黄又爽的视频| 亚洲一区二区三区自拍| jizz中文字幕| 成人精品一区二区三区四区| wwww.国产| 国产精品视频| 国产又粗又长又爽视频| 精品九九在线| 久久综合九色综合网站| 亚洲91网站| 成人妇女免费播放久久久| 不卡av播放| 久久久视频在线| 日本在线免费中文字幕| 亚洲欧美国产日韩天堂区| 国产综合在线播放| 欧美一区二区精品在线| 天天操天天干天天摸| 天天综合天天做天天综合| 国产成人综合在线视频| 欧美高清在线视频| 白丝女仆被免费网站| 成人免费毛片app| 青娱乐国产精品视频| 开心九九激情九九欧美日韩精美视频电影| 黄色一级在线视频| 欧美a级一区| 中文字幕色呦呦| 在线免费观看日本欧美爱情大片| 天天综合色天天综合色hd| 久久不见久久见国语| 久久青青草原| 日韩人体视频| 麻豆av一区二区三区| 精品亚洲免a| 九色综合日本| 青青草原在线亚洲| 欧美激情第六页| 国产成人一区二区三区影院| 欧美一级片免费观看| 精品99久久| 日韩亚洲不卡在线| 日韩国产专区| 一区二区不卡视频| 久久精品青草| 青青草视频国产| 好看的亚洲午夜视频在线| 国产欧美精品aaaaaa片| 激情亚洲网站| 99爱视频在线| 三级在线观看一区二区| 男女爽爽爽视频| 麻豆高清免费国产一区| 最新天堂在线视频| 国产精品一区二区你懂的| 中国男女全黄大片| 成人av动漫在线| 性欧美丰满熟妇xxxx性仙踪林| 久久婷婷一区二区三区| 欧美福利第一页| 中文字幕亚洲一区二区va在线| 亚洲一级二级片| 亚洲夂夂婷婷色拍ww47| 国产无遮挡又黄又爽| 一本一道综合狠狠老| 亚洲性猛交富婆| 欧美一区二区三区视频| 男人天堂网在线视频| 亚洲美女在线观看| 在线观看二区| 欧美激情中文网| 欧洲亚洲两性| 成人午夜激情免费视频| 久久狠狠久久| 婷婷五月色综合| 欧美精品导航| 成年人观看网站| 国产一区福利在线| 添女人荫蒂视频| 日韩毛片在线免费观看| 日本在线观看中文字幕| 日本韩国精品在线| wwwxxxx国产| 一夜七次郎国产精品亚洲| 中中文字幕av在线| 日本精品久久久久久久| 榴莲视频成人app| 欧美日韩一区二区三区在线视频 | 一区二区三区www污污污网站| 欧美变态口味重另类| 黄色视屏网站在线免费观看| 欧美区二区三区| 草莓视频成人appios| 99精品国产高清一区二区| 精品国内自产拍在线观看视频| 国产精品无码免费专区午夜| 日韩电影免费在线| 人妖粗暴刺激videos呻吟| 国产精品亲子乱子伦xxxx裸| 国产无遮挡又黄又爽又色| 欧美日韩国产美| 日本不卡免费播放| 欧美精品在线播放| 国产激情欧美| 欧美久久久久久| 激情视频一区二区三区| 福利视频999| 久久久99精品久久| 日韩成人免费在线观看| 欧美日韩成人综合在线一区二区| 色吊丝在线永久观看最新版本| 久热99视频在线观看| 日韩欧美一区二区三区在线观看| 国产精品久久久久久久久久久久冷 | 久久精品九九| av免费观看不卡| 一区二区三区四区五区视频在线观看 | 国产香蕉视频在线看| 亚州精品天堂中文字幕| 人人九九精品视频| 亚洲一区免费看| 日韩av电影天堂| 波多野结衣片子| 欧美日韩另类在线| 欧美一区,二区| 色综合五月天导航| 日本一区影院| 视色,视色影院,视色影库,视色网| 日韩 欧美一区二区三区| 中文字幕免费看| 精品久久久国产精品999| 色婷婷av一区二区三区之红樱桃| 九色成人免费视频| 麻豆久久一区| 影音先锋成人资源网站| 国产一区二区调教| 欧美日韩大片在线观看| 日韩欧美一区二区在线视频| 影院在线观看全集免费观看| 91探花福利精品国产自产在线| 四虎8848精品成人免费网站| 奇米影视四色在线| 国产精品看片你懂得| 一级片aaaa| 欧美成人全部免费| 99久久免费精品国产72精品九九| 日本大片免费看| av一区二区三区在线| 成人毛片18女人毛片| 亚洲精品一区二区在线| 日韩成人亚洲| 一卡二卡3卡四卡高清精品视频| 精品一区二区精品| 国产suv一区二区三区| 日韩女同互慰一区二区| 国产盗摄精品一区二区酒店| 国产亚洲欧美一区二区| 亚洲视频www| 毛片aaaaaa| 欧美一卡2卡三卡4卡5免费| 日韩免费影院| 精品无人区一区二区三区 | 国产美女搞久久| 1024精品久久久久久久久| 四虎国产精品免费| 午夜亚洲国产au精品一区二区| 日本五码在线| 国产精品一区二区3区| 女主播福利一区| 先锋资源av在线| 欧美熟乱第一页| 性欧美videoshd高清| 麻豆av福利av久久av| 久久99久久99| 国产性生活网站| 亚洲人精选亚洲人成在线| 国产香蕉久久| 成人免费a级片| 久久久91精品国产一区二区精品 | 精品亚洲国产成av人片传媒| 日韩高清在线| 人妻激情另类乱人伦人妻| 26uuu国产电影一区二区| 91精品国产乱码久久| 久久久亚洲福利精品午夜| 九九热爱视频精品视频| 99日在线视频| 都市激情亚洲色图| 黄av在线免费观看| 精品久久久久久一区二区里番| 美女久久久精品| 日韩欧美国产亚洲| 久久人人爽人人爽爽久久| 亚洲v天堂v手机在线| 男人午夜视频在线观看| 色婷婷久久99综合精品jk白丝| h片在线播放| 亚洲精品视频一区二区三区| 波多野洁衣一区| 国产裸体永久免费无遮挡| 热99在线视频|