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

關于 VS Code 優化啟動性能的實踐

新聞
本文主要是對CovalenceConf 2019: Visual Studio Code – The First Second 這次分享的介紹,CovalenceConf 是一個以 Electron 構建桌面軟件為主題的技術會議,這也是 VS Code 團隊為數不多的對外分享之一。

[[421135]]

本文主要是對   CovalenceConf 2019: Visual Studio Code – The First Second  這次分享的介紹,CovalenceConf 是一個以 Electron 構建桌面軟件為主題的技術會議,這也是 VS Code 團隊為數不多的對外分享之一(質量較高),主要分享了 VS Code 是如何優化啟動性能的。

TL ; DR

▐     開頭的一些內容

  1. VS Code 的指導原則之一是盡可能快的讓用戶可以進入編輯狀態

  2. 啟動速度優化并不復雜,但它是許許多多小改進的總和,沒有銀彈

  3. Monaco Editor  最早是 2011 年底開始的一個實驗項目,目的是構建一款在瀏覽器中運行的開發人員工具

▐     關于啟動性能優化

  • 性能優化基本的法則

  1. 測量,測量,還是測量,并基于此建立一個基準線 (VS Code 使用 Performance API,并對整個啟動過程中的關鍵節點打點)

  2. 建立監控,針對每個版本的性能變化快速做出優化措施

  3. 用一臺7年前(現在來說是9年前)的 ThinkPad 做測試,確保它能在1.8秒內啟動 VS Code

  4. 不要過多的專注于 Electron、V8 這些底層依賴,因為有一群聰明的人在不斷的優化它們,專注于加載代碼以及運行程序。

  • 確保代碼盡可能快的加載

  1. 使用 Rollup、Webpack 等構建工具將代碼打包成單文件,這可以節省約 400ms

  2. 壓縮代碼,可以節省約 100ms

  3. 使用 V8 Cached Data 將一些模塊代碼編譯成字節碼文件(一種中間態),這可以節省約 400ms, VS Code 自己使用 AMD Loader 實現了這個緩存,也可以直接用  v8-compile-cache  這個包。

  • 生命周期階段(Lifecycle Phases),分先后順序來做應該做的事?不要一股腦全部執行

  1. 梳理清楚所有關于啟動階段事情的優先級

  2. 保證資源管理器和編輯器初始化,然后再做其他不是非常重要的事

  • requestIdleCallback, 將不那么重要的工作放在瀏覽器空閑時間執行

  1. 參考  Idle Until Urgent  這篇文章

  • 通過一些小技巧使得界面「體感上」較快

  1. 切換編輯器時,使用 MouseDown 來替代 MouseUp / Click 事件,先確保 Tab 很快的切換

  2. 打開耗時較大的文件時,首先將面包屑、狀態欄等其他 UI 部分渲染出來,使得用戶感覺 UI 反應很快

  • 重復以上步驟

沒有銀彈

VS Code 是少有的核心功能完全使用 Web 技術構建的桌面編輯器,在這之前是 Atom,但師出同門(Electron) 的 Atom 最為人詬病的就是其性能問題。VS Code 自誕生那天起,保證 性能優先 就是最重要的一條準則,誠然相比老牌的 Sublime Text,VS Code 性能表現并不能稱得上優秀,但相比之下已經完全是可以接受的水平了。

社區也有很多開源編輯器采用了前后端分離技術,也就是使用 Web 技術構建編輯器 UI 部分,而核心的 TextBuffer 都使用 Native 實現,這類編輯器甚至可以替換 UI 層的技術實現,例如使用我們常見的 Electron,又或是 QT 等桌面端技術,因為編輯器涉及面太廣,這里暫時不再贅述。

最開始我是抱著來找黑魔法的想法來看這次分享的,然而當我結合代碼看了三遍分享后滿屏都是四個字: 沒有銀彈。

總結下來就 是幾個點 * 按照優先級劃分啟動順序,永遠確保文件樹和編輯器最快渲染出來,并且光標第一時間在編輯器內跳動(這意味著用戶可以開始編輯文件了) * 測量監控性能數據,每個版本都收集盡可能多的數據來直觀的表現性能 * 對于出現的性能瓶頸快速做出改進。

性能優化是一個長期的過程,并不是某個時間段集中精力優化一波就高枕無憂了,你可以在 VS Code 的 issue 列表里找到一系列標簽為 perf 和 startup-perf 相關的 issue,并且這些 issue 都有人長期跟蹤解決的。

從哪開始?

在這之前我們需要明確幾個首屏啟動性能相關的概念,這里列舉的并不是全部,有興趣的可以自行在  Web.Dev  查找其他指標。

| 縮寫 | 英文全稱 | 說明 | | -- | ----- | ------ | | FCP |  First Contentful Paint | 瀏覽器渲染DOM內容的第一個字節 | | LCP |  Largest Contentful Paint  | 可是區內最大塊的文本或圖像渲染時間 | | FID |  First Input Delay  | 用戶實現交互操作的相應時間,例如點擊事件有反應 | | FCI |  First CPU Idle | 首次CPU空閑時間 | | TTI |  Time to Interactive  | 頁面開始加載到穩定可交互的時間,所有按鈕點擊都有反應 |

我們不一定關注以上所有的指標,但有幾個對用戶體感差異較為明顯的指標可以重點關注一下,例如 LCP 、 FID 以及 TTI。

還有另一項指標 FMP (First Meaningful Paint 首次有效渲染時間) 不是很推薦,因為它無法直觀的識別頁面的主體內容是否加載完成,例如某些網站會在有意義的內容渲染前展示一個全屏的 Loading 動畫,這對用戶來講顯然是沒有任何意義的,而相比之下 LCP 更為純粹,它只看頁面主體內容、圖像是否加載完成。

這與 VS Code 的原則不謀而合,對于文本編輯器來說,性能好壞最直接的問題就是從點開圖標到我可以輸入文本需要多久?VS Code 的答案是 1 秒 (熱啟動在 500 毫秒左右)。

所以第一步永遠是測量,不管是 console.time 還是新的 Performance API,在關鍵的節點添加這些性能標記,通過大量的數據收集可以得到一個真實的性能指標。VS Code 選擇了 Performance API ,這樣更方便匯總上報數據。運行 Startup Performance 命令可以看到這些性能指標的耗時 (總耗時2s+, 實際上 TTI 是 977ms)。

數據收集除了能看到當前真實的性能指標,更能幫助我們發現耗時花在了哪些地方。要做到這一點,需要找到這些關鍵節點。VS Code 是基于 Electron ,除了常規的頁面渲染之外,還有一包括等待 Electron App Ready、創建窗口、LoadURL 等耗時,這部分的性能有專業的團隊來保障(Electron、V8),不需要關心太多。所以重點需要關心的是 UI 部分的呈現及可交互時間。

盡可能快地加載并執行 JavaScript

回到我們擅長的前端領域,當我們談到性能優化時,總是逃不開幾條金科玉律:

  1. 減小包體積,包括對 HTML、CSS、JavaScript 代碼的壓縮等

  2. 減小 HTTP 請求,使用服務端 gzip 壓縮

  3. 使用 Webpack、Rollup 等現代構建工具來抽離公共代碼,Code Splitting 代碼拆分等

所有這些優化的目的,都是為了盡可能快的加載并執行 JavaScript 代碼。在 SPA 大行其道的今天,JavaScript 加載越慢,就意味著用戶看到的白屏時間更久(于是又催生出了 SSR 這種方案)。

▐     V8 Code Cache

V8 Code Cache  的目的是減少對 JavaScript 代碼的解析與編譯開銷,我們知道 V8 使用 JIT (Just in time compilation) 來執行 JavaScript 代碼,也就是說在 JS 腳本執行之前,必須對其進行解析和編譯,這一步的開銷是較大的。而 Code Cache 技術是在首次編譯時將結果緩存下來,下一次加載相同的腳本時直接讀取磁盤上的緩存來執行,省去了解析、編譯的過程,從而使腳本執行更快。V8 提供了開放的 API,因此,任何使用 V8 的軟件都可以調用該 API,同時 Node.js 5.7.0 版本起 vm 模塊也提供了對該 API 的 包裝 。由于 VS Code 使用  AMD Loader  作為模塊加載器,所以內置實現了  V8 Code Cache 。

不過對于大多數應用來說,沒必要自己實現一遍緩存邏輯,直接使用  v8-compile-cache  ,在入口處引入 v8-compile-cache 即可。

  1. import 'v8-compile-cache'

經過一系列的優化,VS Code 的 JS Bundle 加載速度從一開始的接近 1.5 秒優化到了 0.5 秒。

生命周期,更聰明的排序

編輯器的啟動包含許多邏輯,例如快捷鍵、編輯器、文件瀏覽器、調試器等功能的初始化與事件綁定等等,每個看起來都是非常重要的核心功能,而當軟件體積不斷增大時,這些邏輯可能會像高速公路上的車輛一樣,如果毫無秩序,每一輛車都想以最快的速度通過,反而會導致所有車輛停滯不前,造成擁堵。

拆分生命周期的一個重要目的就是將這些核心功能的優先級進行排序,黃金原則就是盡可能快的讓用戶最關心的界面先渲染出來。對于 VS Code 來說,就是文件資源管理器和編輯器。VS Code 的核心功能都是通過 Contribution 來注冊的。在早期的版本中,這些貢獻點會在啟動時就全部一起進行注冊,這直接導致編輯器的加載被阻塞,最直觀的表現就是界面所有 UI 都已經渲染出來并且可操作時,編輯器內的文本還沒有加載出來(它們可能很大)。 

拆分生命周期階段本質上就是將這些貢獻點分階段來實例化,具體來說,VS Code 將整個啟動的生命周期分為了四個階段

  1. Starting 應用開始啟動階段,非常底層的依賴需要在該階段實例化

  2. Ready 核心服務已經實例化完成

  3. Restored 編輯器、UI 狀態已經恢復完成(前一次關閉時緩存的狀態)

  4. Eventually 準備就緒,意味著編輯器完全可用

生命周期執行的核心代碼 ```typescript // src/vs/workbench/common/contributions.ts

start(accessor: ServicesAccessor): void { const instantiationService = this.instantiationService = accessor.get(IInstantiationService); const lifecycleService = this.lifecycleService = accessor.get(ILifecycleService);

[LifecyclePhase.Starting, LifecyclePhase.Ready, LifecyclePhase.Restored, LifecyclePhase.Eventually].forEach(phase => { this.instantiateByPhase(instantiationService, lifecycleService, phase); }); }

instantiateByPhase(instantiationService: IInstantiationService, lifecycleService: ILifecycleService, phase: LifecyclePhase): void { // 當達到對應的階段時直接實例化貢獻點 if (lifecycleService.phase >= phase) { this.doInstantiateByPhase(instantiationService, phase); }

// 未達到對應階段時一直等待 else { lifecycleService.when(phase).then(() => this.doInstantiateByPhase(instantiationService, phase)); } } ``` 

正如分享的作者 Johannes Rieken 所說,這并不是非常復雜的技術問題,而是以一種更聰明的方式來對啟動過程重新排序。這樣一來,整體的啟動過程會更加的有序,對于一些不是那么重要的任務,將它們的優先級靠后一些,從而確保能在第一時間將編輯器呈現出來,使用戶進入可以編輯的狀態。

IdleCallback

  1. // busy busy busy busy 
  2. // busy busy busy busy 
  3. // busy busy busy busy 
  4. requestIdleCallback((dealline) => { 
  5.   // idle idle idle idle 
  6.   // idle idle idle idle 
  7.   // idle idle idle idle 
  8. }) 
  9. // busy busy busy busy 
  10. // busy busy busy busy 
  11. // busy busy busy busy 

requestIdleCallback 是一個瀏覽器提供的 API,用于在 CPU 空閑時間執行一些任務。相比 setTimeout,requestIdleCallback 的執行時機由瀏覽器來控制,因為瀏覽器知道何時才是空閑時間。利用 requestIdleCallback,可以將一些必要但不緊急的工作延后處理,例如常見的一些埋點上報邏輯,可能會在觸發某些高頻率的交互操作時執行,而如果將這些邏輯與事件處理放在一起,很容易影響操作體驗。

requestIdl eCallback 可以傳入第二個參數,表示超時時間。表示最晚多久以后來執行回調函數。typescript requestIdleCallback(processPendingAnalyticsEvents, { timeout: 2000 }); `

一般來說應該將執行時機交還給瀏覽器,讓瀏覽器自行決定何時調用回調,如果設置了超時時間,則可能因為執行順序被打亂。

Perceived Performance ,讓體感更快的小技巧

對于一些耗時的確會很長的操作,例如打開一個巨大的文件,顯然即便是性能最好的的優化手段,也無法將這種耗時降到毫秒級。但我們可以通過一些小的手段讓這種交互 感覺更快。例如在這個 Case 中,點擊打開一個大文件(2.5m)時,先將編輯器 Tab 以及面包屑渲染出來。

除此之外,對于切換編輯器 Tab 時,使用 MouseDown 而非 MouseUp 事件,一次點擊事件從觸發 MouseDown 到 MouseUp 中間的耗時平均是50ms,這意味著在切換編輯器時,鼠標點擊至少 50ms 后包括 Tab 以及面包屑才會有反應。我們可以寫一個很簡單的 Demo 來觀察這兩者的區別。

例如這張截圖中,點擊 package.json 時,文件內容還是另一個文件,而面包屑已經變成了 package.json。使用這種小技巧,在 VS Code 中切換編輯器時,會令用戶覺得「反應好快」, 

不建議在所有點擊事件觸發的地方都使用 MouseDown 來代替 MouseUp,因為復雜的 UI 可能還需要處理如拖動等事件,這會讓事件處理更加復雜。

最后

這篇分享的內容沒有太多看起來非常硬核的技術手段,更多的是對當前性能瓶頸的測量,以及更聰明的「重新排列組合」,或者說采用了一系列使體驗更好的策略,這對用戶體驗的提升是巨大的。 

 

責任編輯:張燕妮 來源: 淘系技術
相關推薦

2022-03-29 13:27:22

Android優化APP

2020-03-23 15:15:57

MySQL性能優化數據庫

2020-07-17 19:55:50

Vue前端性能優化

2010-07-06 09:07:09

2017-01-23 21:05:00

AndroidApp啟動優化

2025-06-19 09:53:30

Spring性能優化服務器

2019-12-13 10:25:08

Android性能優化啟動優化

2021-09-24 14:02:53

性能優化實踐

2019-08-02 11:28:45

HadoopYARN調度系統

2022-10-28 13:41:51

字節SDK監控

2019-05-21 09:40:47

Elasticsear高性能 API

2018-06-12 15:30:07

數據庫MySQLinsert

2011-08-11 09:45:25

2023-09-25 10:02:00

GitVS Code

2016-11-17 09:00:46

HBase優化策略

2012-12-24 09:55:15

JavaJava WebJava優化

2022-07-15 09:20:17

性能優化方案

2022-07-08 09:38:27

攜程酒店Flutter技術跨平臺整合

2021-02-05 05:28:31

恢復性能優化

2021-06-10 10:02:19

優化緩存性能
點贊
收藏

51CTO技術棧公眾號

国内精品视频免费| 国产欧美日韩综合精品一区二区| 国产亚洲欧洲黄色| 亚洲欧美偷拍另类| 日韩经典av| 久久色.com| 91久久精品美女| 日韩成人免费在线视频| 国产成人影院| 欧美一区二区大片| 无码播放一区二区三区| 免费在线你懂的| av中文字幕亚洲| 成人黄色在线观看| 免费观看一区二区三区毛片| 2019年精品视频自拍| 国产91丝袜在线播放| 98精品国产自产在线观看| 中文字幕伦理片| 精品福利一区| 欧美片在线播放| 女性女同性aⅴ免费观女性恋| 在线观看黄av| 99精品1区2区| 91超碰在线免费观看| 日本中文字幕久久| 黄色精品网站| www.欧美精品一二三区| 国产 porn| 黄页网站在线| 国产精品高潮久久久久无| 黑人巨大精品欧美一区二区小视频| 中文字幕日产av| 国产一区导航| 欧美极品欧美精品欧美视频| 国产欧美小视频| 亚洲警察之高压线| 日韩欧美中文在线| 中文字幕在线乱| 川上优的av在线一区二区| 久久精品成人| 欧美激情a∨在线视频播放| 久久久精品成人| 亚洲都市激情| 亚洲加勒比久久88色综合| 成 年 人 黄 色 大 片大 全| 麻豆视频网站在线观看| 国产喷白浆一区二区三区| 美女黄毛**国产精品啪啪| 亚洲欧美另类视频| 国产69精品一区二区亚洲孕妇| 成人激情视频在线| 国产麻豆91视频| 久久激情五月激情| 国产日韩欧美91| 在线免费看91| 美腿丝袜在线亚洲一区| 国产精品免费久久久久久| 影音先锋亚洲天堂| 99精品久久| 91精品国产99| 亚洲日本韩国在线| 美女黄网久久| 国产精品久久久久久久久粉嫩av | 一本色道久久综合狠狠躁篇怎么玩| 国产精品久久久久久在线观看| 亚洲一区二区三区在线免费| 精品国产欧美一区二区| 亚洲成人福利视频| 精品国产影院| 亚洲精品自拍第一页| 日本黄色特级片| 精品久久久久中文字幕小说 | caoporm免费视频在线| 亚洲色图视频免费播放| 国产91porn| av剧情在线观看| 色婷婷久久综合| 中文字幕第一页在线视频| 久久伊人精品| 亚洲成av人片在线观看香蕉| 亚洲欧洲日产国码无码久久99| 欧美裸体视频| 欧美午夜影院一区| 亚洲美女性囗交| 中文字幕一区二区三区日韩精品| 精品国产亚洲在线| 熟女俱乐部一区二区| 成人在线视频免费观看| 欧美人与性动交| 亚洲另类在线观看| 精品亚洲成a人在线观看| av蓝导航精品导航| 夜夜躁很很躁日日躁麻豆| 国产精品一区二区91| 国产精品福利在线观看网址| 一本到在线视频| 成人手机电影网| 欧美一区二视频在线免费观看| 色三级在线观看| 亚洲一区二区综合| 韩国日本美国免费毛片| а√天堂8资源在线| 色噜噜久久综合| 性色av浪潮av| 国产一区日韩| 久久久久久国产精品久久| 亚洲av无码不卡| 麻豆9191精品国产| 亚洲xxxx视频| 成人在线高清视频| 亚洲丰满少妇videoshd| 日本不卡一区二区在线观看| 久久夜色电影| 久久av.com| 中文字幕在线观看国产| 91视频一区二区| 久久er99热精品一区二区三区 | 91丝袜美腿高跟国产极品老师| 神马影院一区二区| 麻豆视频在线看| 日韩欧美色综合网站| 精品无码在线观看| 日韩午夜精品| 成人自拍视频网站| 国产网站在线免费观看| 在线观看免费成人| wwwwww日本| 99国产精品视频免费观看一公开| 91久久精品日日躁夜夜躁国产| 国产小视频福利在线| 亚洲福利电影网| 亚洲精品成人无码毛片| 亚洲成人免费| 91精品国产自产在线| 免费在线黄色网址| 欧美日韩在线免费| 成人性生活免费看| 欧美天堂影院| 欧美伦理91i| 国产精品无码天天爽视频| 国产欧美一区视频| 无码人妻h动漫| 亚洲福利网站| 国产99在线|中文| 男女视频在线观看免费| 日韩欧美999| 日本少妇色视频| 先锋影音国产一区| 久久国产精品 国产精品| 不卡专区在线| 亚洲国产精品电影| 日韩黄色三级视频| av在线不卡电影| 99精品在线免费视频| 欧美男人操女人视频| 98精品在线视频| 午夜影院免费体验区| 欧美日韩裸体免费视频| 无套内谢大学处破女www小说| 99国产精品久久久久久久成人热| 久久久7777| 91精品影视| 日韩美女视频在线| 欧美精品色哟哟| 中文在线一区| 久久99精品久久久久久久青青日本| 国产亚洲成av人片在线观看| 日韩毛片中文字幕| 国产乱码77777777| 亚洲欧洲av一区二区三区久久| 九九爱精品视频| 国产精品qvod| 在线播放国产一区二区三区| 中文字幕永久在线| 最新久久zyz资源站| 黄页网站在线看| 一本色道久久综合亚洲精品不卡| 六月婷婷久久| 久久久久久一区二区三区四区别墅 | 无码少妇一区二区三区芒果| 欧美色图一区| 亚洲a一级视频| h片在线观看视频免费| 亚洲欧美精品在线| 国产又粗又黄又爽的视频| 亚洲乱码精品一二三四区日韩在线 | 深夜福利视频在线观看| 在线亚洲高清视频| 国产传媒免费在线观看| 成人动漫一区二区| 99免费视频观看| 中文不卡在线| 免费影院在线观看一区| 国产视频一区二区在线播放| 91国内在线视频| 一本一道波多野毛片中文在线| 日韩精品一区二区三区在线观看| 久久99国产综合精品免费| 中文字幕一区二区不卡 | 久久久精品中文字幕麻豆发布| 日日噜噜噜夜夜爽爽| 国产ts一区| 国产精品一久久香蕉国产线看观看| 91极品在线| 国产一区二区三区日韩欧美| 亚洲国产精彩视频| 亚洲激情校园春色| 亚洲av综合一区二区| 国产成人在线电影| 久久久久久久久久久久久国产精品| 亚洲成人三区| 亚洲高清在线观看一区| 激情视频极品美女日韩| 91美女片黄在线观看游戏| 欧美理论影院| 97色在线视频观看| 影音先锋在线播放| 色黄久久久久久| 欧美日韩免费做爰大片| 亚洲国产日韩欧美在线99| 国产乱人乱偷精品视频| 在线观看日韩电影| 日本视频在线观看免费| 亚洲成人免费看| 欧美人禽zoz0强交| 一区二区中文视频| 天堂av网手机版| 久久夜色精品国产噜噜av| 乱码一区二区三区| 国产精品系列在线播放| 国产美女18xxxx免费视频| 日韩精品免费专区| 成人黄色片视频| 国产视频亚洲| 欧美黑人经典片免费观看| 欧美午夜久久| 欧美一区二区激情| 粉嫩av一区二区| 91久久久久久久久久久| 欧美久久久网站| 国产精品一区二区三区毛片淫片| 台湾佬成人网| 人人做人人澡人人爽欧美| 在线天堂中文资源最新版| 91精品国产免费久久久久久| 俺来俺也去www色在线观看| 欧美丰满少妇xxxx| 91美女主播在线视频| 欧美精品videofree1080p| 日本资源在线| 欧美激情精品久久久久久黑人| 午夜伦理在线视频| 久久露脸国产精品| jizzjizz中国精品麻豆| 亚洲91av视频| 美脚恋feet久草欧美| 精品国产视频在线 | 欧美黄色片在线观看| 欧美极品少妇videossex| 欧美黄色小视频| 欧美激情网站| 国产精品国产自产拍高清av水多| 国产精品第一国产精品| 国产女人18毛片水18精品| aa亚洲一区一区三区| 亚洲一区精品电影| 国内视频在线精品| 麻豆一区区三区四区产品精品蜜桃| 色综合中文网| 一区不卡视频| 牛夜精品久久久久久久99黑人| 国产乱淫av片杨贵妃| 亚洲深爱激情| 牛夜精品久久久久久久| 韩国av一区二区三区在线观看| 亚洲国产欧美91| 97精品电影院| 亚洲熟女少妇一区二区| 亚洲最大的成人av| 香蕉影院在线观看| 911精品产国品一二三产区| 亚洲精品第五页| 亚洲欧美变态国产另类| 黄色av电影在线播放| 久久久久久久久久久免费| 午夜无码国产理论在线| 91视频88av| 亚洲va久久| 宅男av一区二区三区| 激情欧美日韩一区| 成年网站在线播放| 成人白浆超碰人人人人| 国产精品天天干| 亚洲午夜电影在线观看| 国产免费www| 精品国产乱子伦一区| av电影在线网| 久久久人成影片一区二区三区观看| se01亚洲视频| 国产经品一区二区| 日韩欧美精品| 欧美老熟妇喷水| 国产精品综合久久| 欧美做受高潮6| 亚洲电影在线播放| 91女人18毛片水多国产| 日韩精品在线免费观看视频| www在线免费观看视频| 国产a级全部精品| 国产亚洲成av人片在线观黄桃| 夜夜爽www精品| 久久国产高清| 黄色在线免费播放| 亚洲欧美日韩国产成人精品影院| 天堂а√在线中文在线新版| 日韩欧美一级精品久久| chinese偷拍一区二区三区| 91国产精品视频在线| 一区中文字幕电影| 男女h黄动漫啪啪无遮挡软件| 久久一区二区三区四区五区| 国产精品入口麻豆| 亚洲美女免费视频| 国产精品久久久久久久久毛片 | 欧美日韩黄色网| 欧美日韩一区二区在线观看视频| 性xxxx视频| 久久久久在线观看| 午夜视频在线观看精品中文 | 日韩午夜精品| 伊人久久一区二区三区| 一区二区三区四区av| 国产99久一区二区三区a片 | 亚洲第一中文字幕在线观看| 成人在线app| 91久久精品日日躁夜夜躁国产| 91亚洲国产| 思思久久精品视频| 综合久久久久久久| 国产美女自慰在线观看| 久久久精品一区| 在线不卡一区| 欧美日韩视频免费在线观看| 久久国产生活片100| 美国精品一区二区| 欧美视频一区在线观看| av大片在线观看| 国产欧美久久久久久| 亚洲精品成人无限看| 51自拍视频在线观看| 亚洲激情图片小说视频| www.亚洲天堂.com| 欧美激情一区二区久久久| jizz18欧美18| 激情五月宗合网| 久久久国产精华| 国产精品成人无码| 久久精品视频一| 亚洲一区二区免费在线观看| 福利视频免费在线观看| www.日韩大片| 波多野结衣一区二区三区四区| 伊人伊人伊人久久| 国产精品视频一区视频二区| 成人国产在线看| 99久久久国产精品| 免费视频网站在线观看入口| 色系列之999| 日韩中文字幕一区二区高清99| 菠萝蜜视频在线观看入口| 北条麻妃一区二区三区| 黄瓜视频在线免费观看| 中文字幕在线视频日韩| 免费观看性欧美大片无片| 青青青在线视频播放| 91年精品国产| 一级特黄aa大片| 午夜精品久久久久久久久久久久久| 日韩有码中文字幕在线| 中国黄色片免费看| 亚洲综合一区在线| 国产小视频在线| 亚洲一区二区三区视频| 99精品视频网| 日本成人精品视频| 亚洲精品ady| 日本a人精品| 久久综合九色综合88i| 国产蜜臀97一区二区三区| 精品人妻少妇嫩草av无码专区| 欧美专区在线观看| 亚洲国产精品综合久久久 | 国产91成人在在线播放| 日本一区二区高清不卡| 中文字幕乱码在线| 777久久久精品| 在线免费日韩片| 日韩欧美猛交xxxxx无码| 日韩电影在线免费|