日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

前端性能優(yōu)化:讓你的長任務(wù)保持在50ms 內(nèi)

來源: 責編: 時間:2024-05-16 17:43:13 218觀看
導讀雖然之前有跟大家分享過不少卡頓相關(guān)的內(nèi)容,實際上網(wǎng)頁里卡頓的產(chǎn)生基本上都是由于長任務(wù)導致的。當然,能阻塞用戶操作的,我們說的便是主線程上的長任務(wù)。瀏覽器中的長任務(wù)可能是 JavaScript 的編譯、解析 HTML 和 CSS、

雖然之前有跟大家分享過不少卡頓相關(guān)的內(nèi)容,實際上網(wǎng)頁里卡頓的產(chǎn)生基本上都是由于長任務(wù)導致的。當然,能阻塞用戶操作的,我們說的便是主線程上的長任務(wù)。IBo28資訊網(wǎng)——每日最新資訊28at.com

瀏覽器中的長任務(wù)可能是 JavaScript 的編譯、解析 HTML 和 CSS、渲染頁面,或者是我們編寫的 JavaScript 中產(chǎn)生了長任務(wù)導致。IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

讓你的長任務(wù)保持在 50 ms 內(nèi)

之前在介紹前端性能優(yōu)化--卡頓篇時,提到可以將大任務(wù)進行拆解:IBo28資訊網(wǎng)——每日最新資訊28at.com

考慮將任務(wù)執(zhí)行耗時控制在 50 ms 左右。每執(zhí)行完一個任務(wù),如果耗時超過 50 ms,將剩余任務(wù)設(shè)為異步,放到下一次執(zhí)行,給到頁面響應用戶操作和更新渲染的時間。IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

為什么是 50 毫秒呢?IBo28資訊網(wǎng)——每日最新資訊28at.com

這個數(shù)值并不是隨便寫的,主要來自于 Google 員工開發(fā)的 RAIL 模型。IBo28資訊網(wǎng)——每日最新資訊28at.com

1.RAIL 模型

RAIL 表示 Web 應用生命周期的四個不同方面:響應(Response)、動畫(Animation)、空閑(Idel)和加載(Load)。由于用戶對每種情境有不同的性能預期,因此,系統(tǒng)會根據(jù)情境以及關(guān)于用戶如何看待延遲的用戶體驗調(diào)研來確定效果目標。IBo28資訊網(wǎng)——每日最新資訊28at.com

人機交互學術(shù)研究由來已久,在 Jakob Nielsen’s work on response time limits 中提出三個閾值:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 100 毫秒:大概是讓用戶感覺系統(tǒng)立即做出反應的極限,這意味著除了顯示結(jié)果之外不需要特殊的反饋
  • 1 秒:大概是用戶思想流保持不間斷的極限,即使用戶會注意到延遲。一般情況下,大于0.1秒小于1.0秒的延遲不需要特殊反饋,但用戶確實失去了直接操作數(shù)據(jù)的感覺
  • 10 秒:大概是讓用戶的注意力集中在對話上的極限。對于較長的延遲,用戶會希望在等待計算機完成的同時執(zhí)行其他任務(wù),因此應該向他們提供反饋,指示計算機預計何時完成。如果響應時間可能變化很大,則延遲期間的反饋尤其重要,因為用戶將不知道會發(fā)生什么。

在此基礎(chǔ)上,如今機器性能都有大幅度的提升,因此基于用戶的體驗,RAIL 增加了一項:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 0-16 ms:大概是用戶感受到流暢的動畫體驗的數(shù)值。只要每秒渲染 60 幀,這類動畫就會感覺很流暢,也就是每幀 16 毫秒(包括瀏覽器將新幀繪制到屏幕上所需的時間),讓應用生成一幀大約 10 毫秒

由于這篇文章我們討論的是長任務(wù)相關(guān),因此主要考慮生命周期中的響應(Response),目標便是要求 100 毫秒內(nèi)獲得可見響應。IBo28資訊網(wǎng)——每日最新資訊28at.com

2.在 50 毫秒內(nèi)處理事件

RAIL 的目標是在 100 毫秒內(nèi)完成由用戶輸入發(fā)起的轉(zhuǎn)換,讓用戶感覺互動是瞬時完成的。IBo28資訊網(wǎng)——每日最新資訊28at.com

目標是 100 毫秒,但是頁面運行時除了輸入處理之外,通常還會執(zhí)行其他工作,并且這些工作會占用可用于獲得可接受輸入響應的部分時間。IBo28資訊網(wǎng)——每日最新資訊28at.com

因此,為確保在 100 毫秒內(nèi)獲得可見響應,RAIL 的準則是在 50 毫秒內(nèi)處理用戶輸入事件:IBo28資訊網(wǎng)——每日最新資訊28at.com

為確保在 100 毫秒內(nèi)獲得可見響應,請在 50 毫秒內(nèi)處理用戶輸入事件。這適用于大多數(shù)輸入,例如點擊按鈕、切換表單控件或啟動動畫。這不適用于輕觸拖動或滾動。IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

除了響應之外,RAIL 對其他的生命周期也提出了對應的準則,總體為:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 響應(Response):在 50 毫秒內(nèi)處理事件
  • 動畫(Animation):在 10 毫秒內(nèi)生成一幀
  • 空閑(Idel):最大限度地延長空閑時間
  • 加載(Load):提交內(nèi)容并在 5 秒內(nèi)實現(xiàn)互動

具體每個行為的目標和準則是如何考慮和確定的,大家可以自行學習,這里不再贅述。IBo28資訊網(wǎng)——每日最新資訊28at.com

長任務(wù)優(yōu)化

網(wǎng)頁加載時,長時間任務(wù)可能會占用主線程,使頁面無法響應用戶輸入(即使頁面看起來已就緒)。點擊和點按通常不起作用,因為尚未附加事件監(jiān)聽器、點擊處理程序等。IBo28資訊網(wǎng)——每日最新資訊28at.com

基于前面介紹的 RAIL 模型,我們可以將超過 50 毫秒的任務(wù)稱之為長任務(wù),即:任何連續(xù)不間斷的且主 UI 線程繁忙 50 毫秒及以上的時間區(qū)間。IBo28資訊網(wǎng)——每日最新資訊28at.com

實際上,Chrome 瀏覽器中的 Performance 面板也是如此定義的,我們錄制一段 Performance,當主線程同步執(zhí)行的任務(wù)超過 50 毫秒時,該任務(wù)塊會被標記為紅色。IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

識別長任務(wù)

一般來說,在前端網(wǎng)頁中容易出現(xiàn)的長任務(wù)包括:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 大型的 JavaScript 代碼加載
  • 解析 HTML 和 CSS
  • DOM 查詢/DOM 操作
  • 運算量較大的 JavaScript 腳本的執(zhí)行

(1) 使用 Chrome DevtoolsIBo28資訊網(wǎng)——每日最新資訊28at.com

我們可以在 Chrome 開發(fā)者工具中,通過錄制 Performance 的方式,手動查找時長超過 50 毫秒的腳本的“長紅/黃色塊”,然后分析這些任務(wù)塊的執(zhí)行內(nèi)容,來識別出長任務(wù)。IBo28資訊網(wǎng)——每日最新資訊28at.com

我們可以選擇 Bottom-Up 和 Group by Activity 面板來分析這些長任務(wù)(關(guān)于如何使用 Performance 面板,可以參考分析運行時性能一文):IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

比如在上圖中,導致任務(wù)耗時較長的原因是一組成本高昂的 DOM 查詢。IBo28資訊網(wǎng)——每日最新資訊28at.com

(2) 使用 Long Tasks APIIBo28資訊網(wǎng)——每日最新資訊28at.com

我們還可以使用 Long Tasks API 來確定哪些任務(wù)導致互動延遲:IBo28資訊網(wǎng)——每日最新資訊28at.com

new PerformanceObserver(function (list) {  const perfEntries = list.getEntries();  for (let i = 0; i < perfEntries.length; i++) {    // 分析長任務(wù)  }}).observe({ entryTypes: ["longtask"] });

(3) 識別大型腳本IBo28資訊網(wǎng)——每日最新資訊28at.com

大型腳本通常是導致耗時較長的任務(wù)的主要原因,我們可以想辦法來識別。IBo28資訊網(wǎng)——每日最新資訊28at.com

除了使用上述的方法,我們還可以使用PerformanceObserver識別:IBo28資訊網(wǎng)——每日最新資訊28at.com

new PerformanceObserver((resource) => {    const entries = resource.getEntries();    entries.forEach((entry: PerformanceResourceTiming) => {        // 獲取 JavaScript 資源        if (entry.initiatorType !== 'script') return;        const startTime = new Date().getTime();                window.requestAnimationFrame(() => {          // JavaScript 資源加載完成          const endTime = new Date().getTime();          // 如果此時耗時大于 50 ms,則可任務(wù)出現(xiàn)了長任務(wù)          const isLongTask = endTime - startTime > 50;        });    });}).observe({entryTypes: ['resource']});

這種方式我們還可以通過entry.name拿到對應的加載資源,針對性地進行處理。IBo28資訊網(wǎng)——每日最新資訊28at.com

(4) 自定義性能指標IBo28資訊網(wǎng)——每日最新資訊28at.com

除此之外,我們還可以通過在代碼中埋點,自行計算執(zhí)行耗時,從而針對可預見的場景識別出長任務(wù):IBo28資訊網(wǎng)——每日最新資訊28at.com

// 可預見的大任務(wù)執(zhí)行前打點performance.mark('bigTask:start');await doBigTask();// 執(zhí)行后打點performance.mark('bigTask:end');// 測量該任務(wù)performance.measure('bigTask', 'bigTask:start', 'bigTask:end');

再配合PerformanceObserver獲取對應的性能數(shù)據(jù),大于 50 毫秒則可以判斷為長任務(wù)、IBo28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)化長任務(wù)

發(fā)現(xiàn)長任務(wù)之后,我們就可以進行對應的長任務(wù)優(yōu)化。IBo28資訊網(wǎng)——每日最新資訊28at.com

1.過大的 JavaScript 腳本

大型腳本通常是導致耗時較長的任務(wù)的主要原因,尤其是首屏加載時盡量避免加載不必要的代碼。IBo28資訊網(wǎng)——每日最新資訊28at.com

我們可以考慮拆分這些腳本:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 首屏加載,僅加載必要的最小 JavaScript 代碼。
  • 其他 JavaScript 代碼進行模塊化,進行分包加載。
  • 通過預加載、閑時加載等方式,完成剩余所需模塊的代碼加載。

拆分 JavaScript 腳本,使得用戶打開頁面時,只發(fā)送初始路由所需的代碼。這樣可以最大限度地減少需要解析和編譯的腳本量,從而縮短網(wǎng)頁加載時,也有助于提高 First Input Delay (FID) 和 Interaction to Next Paint (INP) 時間。IBo28資訊網(wǎng)——每日最新資訊28at.com

有很多工具可以幫助我們完成這項工作:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • webpack
  • Parcel
  • Rollup

這些熱門的模塊打包器,都支持動態(tài)加載的方式來拆分 JavaScript 腳本。我們甚至可以限制每個構(gòu)建模塊的大小,來防止某個模塊的 JavaScript 腳本過大,具體的使用方式大家可以自行搜索。IBo28資訊網(wǎng)——每日最新資訊28at.com

2.過長的 JavaScript 執(zhí)行任務(wù)

主線程一次只能處理一個任務(wù)。如果任務(wù)的延時時間超過某一點(確切來說是 50 毫秒),則會被歸類為耗時較長的任務(wù)。IBo28資訊網(wǎng)——每日最新資訊28at.com

對于這種過長的執(zhí)行任務(wù),優(yōu)化方案也十分直接:任務(wù)拆分,直觀來看就是這樣:IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

一般來說,任務(wù)拆分可以分為兩種:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 串行執(zhí)行的不同執(zhí)行任務(wù)。
  • 單個超大的執(zhí)行任務(wù)。

(1) 串行任務(wù)的拆分IBo28資訊網(wǎng)——每日最新資訊28at.com

對于串行執(zhí)行的不同任務(wù),可以將不同任務(wù)的調(diào)用從同步改成異步即可,比如 Optimize long tasks 這篇文章中詳細介紹的:IBo28資訊網(wǎng)——每日最新資訊28at.com

saveSettings()的函數(shù),該函數(shù)會調(diào)用五個函數(shù)來完成某些工作:IBo28資訊網(wǎng)——每日最新資訊28at.com

function saveSettings () {  validateForm();  showSpinner();  saveToDatabase();  updateUI();  sendAnalytics();}

IBo28資訊網(wǎng)——每日最新資訊28at.com

對這些串行任務(wù)進行拆分有很多種方式,比如:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 使用setTimeOut()/postTask()實現(xiàn)異步
  • 自行實現(xiàn)任務(wù)管理器,管理串行任務(wù)執(zhí)行,每執(zhí)行一個任務(wù)后釋放主線程,再執(zhí)行下一個任務(wù)(還需考慮優(yōu)先級執(zhí)行任務(wù))

具體的代碼可以參考 Optimize long tasks 該文章,理想的優(yōu)化效果為:IBo28資訊網(wǎng)——每日最新資訊28at.com

IBo28資訊網(wǎng)——每日最新資訊28at.com

(2) 單個超大任務(wù)的拆分IBo28資訊網(wǎng)——每日最新資訊28at.com

有時候我們的應用中需要做大量的運算,比如對上百萬個數(shù)據(jù)做一系列的計算,此時我們可以考慮進行分批拆分。IBo28資訊網(wǎng)——每日最新資訊28at.com

拆分的時候需要注意幾個事情:IBo28資訊網(wǎng)——每日最新資訊28at.com

  • 盡量將每個小任務(wù)拆成 50 毫秒左右的執(zhí)行時間。
  • 大任務(wù)分批執(zhí)行,會由同步執(zhí)行變?yōu)楫惒綀?zhí)行,需要考慮中間態(tài)(是否有新的任務(wù)插入,是否會重復執(zhí)行)。

之前在介紹復雜渲染引擎的時候,有詳細講解使用分批計算的方法進行性能優(yōu)化,具體可以參考《復雜渲染引擎架構(gòu)與設(shè)計--5.分片計算》一文。IBo28資訊網(wǎng)——每日最新資訊28at.com

結(jié)束語

對于大型復雜的前端應用來說,卡頓和長任務(wù)都是家常便飯。IBo28資訊網(wǎng)——每日最新資訊28at.com

性能優(yōu)化沒有捷徑,有的都是一步步定位,一點點分析,一處處解決。每一個問題都是獨立的問題,但我們還可以識別它們的共性,提供更高效的解決路徑。IBo28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88718-0.html前端性能優(yōu)化:讓你的長任務(wù)保持在50ms 內(nèi)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一個小技巧,寫出絲滑的 Python 代碼

下一篇: 使用Cargo的特性來優(yōu)化你的Rust項目

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競品的一加也坐不住了。一加中國區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 《英雄聯(lián)盟》夏季賽總決賽今日開打!JDG對陣LNG首發(fā)名單來了 Knight:準備三連冠

    8月5日消息,今日17:00,《英雄聯(lián)盟》2023LPL夏季賽總決賽將正式開打,由JDG對陣LNG。對兩支隊伍來說,這場比賽不僅要爭奪夏季賽冠軍,更要決定誰才是LPL賽區(qū)一
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務(wù)支持一樣,抽象緩存允許一致地使用各
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業(yè)人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經(jīng)知道了,就當作復習一下,古人云,溫故而知新嘛?,F(xiàn)在,我們就開始今
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽為&ldquo;純欲天花板&rdquo;的女網(wǎng)紅井川里予,近期因為一組哥特風照片登上熱搜,引發(fā)了一場互聯(lián)網(wǎng)世界關(guān)于
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區(qū)間的恒生科技指數(shù)跌幅為52.78%
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久综合久久综合九色| 亚洲视频第一页| 国产一区二区三区高清播放| 国内精品久久久久影院色| 在线观看日韩av先锋影音电影院| 亚洲人成网站色ww在线| 亚洲一区二区毛片| 久久精品日产第一区二区三区| 另类天堂av| 国产精品99免视看9| 国产一区二区日韩| 亚洲国产精品va在看黑人| 在线综合亚洲| 久久精品观看| 欧美国产视频一区二区| 国产精品久久中文| 黄色av成人| 国产精品99久久久久久久vr | 中国成人亚色综合网站| 欧美综合77777色婷婷| 欧美成人午夜激情视频| 国产精品美女久久久久久免费| 在线观看国产成人av片| 亚洲一区欧美激情| 久久婷婷国产麻豆91天堂| 欧美午夜理伦三级在线观看| 精品不卡视频| 亚洲欧美变态国产另类| 欧美激情精品久久久久久黑人| 国产酒店精品激情| 99riav国产精品| 久久综合影视| 国产日韩欧美不卡| 一区二区电影免费观看| 久久久国产精品亚洲一区| 欧美视频一区二区| 亚洲国产日韩欧美在线动漫| 欧美影院午夜播放| 欧美午夜视频| 欧美精品一区二区蜜臀亚洲| 国产欧美日韩精品一区| 99国产精品99久久久久久粉嫩| 久久久精品性| 国产精品亚洲а∨天堂免在线| 亚洲国产婷婷香蕉久久久久久| 欧美一区二区精品| 欧美性大战久久久久| 亚洲人成亚洲人成在线观看图片 | 久久久人成影片一区二区三区观看| 欧美体内谢she精2性欧美| 亚洲日本成人| 久久躁狠狠躁夜夜爽| 国产日韩欧美不卡在线| 亚洲少妇诱惑| 欧美精品一区三区| 亚洲狠狠丁香婷婷综合久久久| 久久精品一区二区三区不卡牛牛| 国产精品午夜春色av| 一区二区三区日韩精品| 欧美精品偷拍| 91久久久久久| 美腿丝袜亚洲色图| 韩国av一区| 久久精品二区| 国产综合一区二区| 欧美综合激情网| 欧美性一二三区| 99精品视频免费观看视频| 欧美激情精品久久久六区热门| 在线欧美视频| 欧美1区3d| 亚洲国产清纯| 欧美福利在线| 亚洲日本黄色| 欧美激情在线观看| 亚洲精品一级| 欧美精品少妇一区二区三区| 亚洲精品久久久蜜桃| 欧美国产日本| 一本色道久久加勒比88综合| 欧美三级乱码| 亚洲手机视频| 国产精品你懂的在线欣赏| 亚洲尤物视频网| 国产精品视频999| 午夜影院日韩| 国产亚洲人成网站在线观看| 久久精品国产99| 一区二区自拍| 免费观看亚洲视频大全| 在线观看日韩专区| 欧美国产日韩xxxxx| 亚洲精品一二三区| 欧美日韩色一区| 亚洲一区二区三区777| 国产精品久久一区主播| 欧美亚洲一区二区在线观看| 国产一区二区高清| 久久综合影视| 亚洲美女性视频| 欧美性猛交视频| 欧美一区二区三区免费视| 国内精品久久久久影院优| 美女亚洲精品| 亚洲精品美女91| 欧美午夜精品久久久久久人妖| 亚洲欧美视频一区| 国语精品一区| 欧美激情亚洲自拍| 亚洲天堂网在线观看| 国产欧美一区二区精品性| 久久一本综合频道| 日韩视频在线观看国产| 国产精品久久九九| 久久久久久高潮国产精品视| 亚洲人成人一区二区在线观看| 国产精品高潮粉嫩av| 久久aⅴ国产紧身牛仔裤| 亚洲国产91色在线| 欧美在线中文字幕| 亚洲日韩欧美视频| 国产精品久久久久久久久婷婷| 噜噜噜久久亚洲精品国产品小说| 亚洲已满18点击进入久久| 亚洲国产精品一区二区第四页av | 亚洲一二区在线| 亚洲国产日韩欧美在线动漫| 亚洲图片在线观看| 亚洲色诱最新| 欧美日韩人人澡狠狠躁视频| 一本久道久久久| 国产精品国内视频| 欧美在线免费看| 亚洲国产高清在线| 欧美无乱码久久久免费午夜一区| 亚洲欧美日韩国产精品| 国产麻豆综合| 亚洲国产日韩欧美在线99| 亚洲国产成人在线| 亚洲精品乱码久久久久久蜜桃91| 亚洲乱码国产乱码精品精天堂 | 亚洲欧美电影在线观看| 毛片一区二区三区| 国产欧美日韩亚洲精品| 一区二区日韩欧美| 久久这里只有| 在线观看91精品国产麻豆| 亚洲一区在线观看视频| 久久精品国产清高在天天线| 久久久噜噜噜久久中文字免| 久久在线免费| 中文在线资源观看网站视频免费不卡 | 久久一区免费| 亚洲激情国产| 卡一卡二国产精品| 欧美黄色aaaa| 亚洲精品日韩在线观看| 欧美午夜精品久久久久久孕妇 | 亚洲一本视频| 一区在线观看| 国产视频综合在线| 欧美屁股在线| 亚洲欧美高清| 欧美激情四色 | 狠狠爱www人成狠狠爱综合网| 欧美日韩亚洲不卡| 快射av在线播放一区| 亚洲欧美日韩成人| 一本久道久久综合婷婷鲸鱼| 亚洲国产黄色片| 国产中文一区二区三区| 国产精品久久久久秋霞鲁丝| 欧美久久一区| 另类专区欧美制服同性| 久久成人精品无人区| 亚洲视频免费在线| 亚洲精品乱码视频| 亚洲全部视频| 亚洲第一页中文字幕| 国内精品久久久久久久果冻传媒 | 中国成人黄色视屏| 夜夜嗨av一区二区三区四区| 亚洲精品国产精品国产自| 在线观看国产一区二区| 韩国三级电影一区二区| 国产欧美日韩另类视频免费观看 | 国产三级精品在线不卡| 国产精品久久久久久久久免费樱桃| 欧美大片免费看| 免费av成人在线| 久久先锋资源| 久久久久久久综合狠狠综合| 欧美一区国产二区| 欧美一级黄色网| 午夜精品一区二区三区四区 | 亚洲肉体裸体xxxx137| 亚洲黄色精品| 91久久香蕉国产日韩欧美9色| 亚洲国产婷婷综合在线精品| 亚洲成人在线视频网站| 韩国久久久久| 尤物99国产成人精品视频| 尤妮丝一区二区裸体视频| 韩日精品中文字幕|