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

移動(dòng)H5首屏秒開優(yōu)化方案探討

移動(dòng)開發(fā)
隨著移動(dòng)設(shè)備性能不斷增強(qiáng),web 頁面的性能體驗(yàn)逐漸變得可以接受,又因?yàn)?web 開發(fā)模式的諸多好處(跨平臺,動(dòng)態(tài)更新,減體積,無限擴(kuò)展),APP 客戶端里出現(xiàn)越來越多內(nèi)嵌 web 頁面(為了配上當(dāng)前流行的說法,以下把所有網(wǎng)頁都稱為 H5 頁面,雖然可能跟 H5 沒關(guān)系),很多 APP 把一些功能模塊改成用 H5 實(shí)現(xiàn)。

隨著移動(dòng)設(shè)備性能不斷增強(qiáng),web 頁面的性能體驗(yàn)逐漸變得可以接受,又因?yàn)?web 開發(fā)模式的諸多好處(跨平臺,動(dòng)態(tài)更新,減體積,***擴(kuò)展),APP 客戶端里出現(xiàn)越來越多內(nèi)嵌 web 頁面(為了配上當(dāng)前流行的說法,以下把所有網(wǎng)頁都稱為 H5 頁面,雖然可能跟 H5 沒關(guān)系),很多 APP 把一些功能模塊改成用 H5 實(shí)現(xiàn)。

雖然說 H5 頁面性能變好了,但如果沒針對性地做一些優(yōu)化,體驗(yàn)還是很糟糕的,主要兩部分體驗(yàn):

  • 頁面啟動(dòng)白屏?xí)r間:打開一個(gè) H5 頁面需要做一系列處理,會(huì)有一段白屏?xí)r間,體驗(yàn)糟糕。
  • 響應(yīng)流暢度:由于 webkit 的渲染機(jī)制,單線程,歷史包袱等原因,頁面刷新/交互的性能體驗(yàn)不如原生。

本文先不討論第二點(diǎn),只討論***點(diǎn),怎樣減少白屏?xí)r間。對 APP 里的一些使用 H5 實(shí)現(xiàn)的功能模塊,怎樣加快它們的啟動(dòng)速度,讓它們啟動(dòng)的體驗(yàn)接近原生。

[[200142]]

過程

為什么打開一個(gè) H5 頁面會(huì)有一長段白屏?xí)r間?因?yàn)樗隽撕芏嗍虑椋蟾攀牵?/p>

  • 初始化 webview -> 請求頁面 -> 下載數(shù)據(jù) -> 解析HTML -> 請求 js/css 資源 -> dom 渲染 -> 解析 JS 執(zhí)行 -> JS 請求數(shù)據(jù) -> 解析渲染 -> 下載渲染圖片
  • 一些簡單的頁面可能沒有 JS 請求數(shù)據(jù) 這一步,但大部分功能模塊應(yīng)該是有的,根據(jù)當(dāng)前用戶信息,JS 向后臺請求相關(guān)數(shù)據(jù)再渲染,是常規(guī)開發(fā)方式。
  • 一般頁面在 dom 渲染后能顯示雛形,在這之前用戶看到的都是白屏,等到下載渲染圖片后整個(gè)頁面才完整顯示,首屏秒開優(yōu)化就是要減少這個(gè)過程的耗時(shí)。

前端優(yōu)化

上述打開一個(gè)頁面的過程有很多優(yōu)化點(diǎn),包括前端和客戶端,常規(guī)的前端和后端的性能優(yōu)化在桌面時(shí)代已經(jīng)有***實(shí)踐,主要的是:

  • 降低請求量: 合并資源,減少 HTTP 請求數(shù),minify / gzip 壓縮,webP,lazyLoad。
  • 加快請求速度: 預(yù)解析DNS,減少域名數(shù),并行加載,CDN 分發(fā)。
  • 緩存: HTTP 協(xié)議緩存請求,離線緩存 manifest,離線數(shù)據(jù)緩存localStorage。
  • 渲染: JS/CSS優(yōu)化,加載順序,服務(wù)端渲染,pipeline。

其中對首屏啟動(dòng)速度影響***的就是網(wǎng)絡(luò)請求,所以優(yōu)化的重點(diǎn)就是緩存,這里著重說一下前端對請求的緩存策略。我們再細(xì)分一下,分成 HTML 的緩存,JS/CSS/image 資源的緩存,以及 json 數(shù)據(jù)的緩存。

HTML 和 JS/CSS/image 資源都屬于靜態(tài)文件,HTTP 本身提供了緩存協(xié)議,瀏覽器實(shí)現(xiàn)了這些協(xié)議,可以做到靜態(tài)文件的緩存,具體可以參考 這里 ,總的來說,就是兩種緩存:

  • 詢問是否有更新:根據(jù) If-Modified-Since / ETag 等協(xié)議向后端請求詢問是否有更新,沒有更新返回304,瀏覽器使用本地緩存。
  • 直接使用本地緩存:根據(jù)協(xié)議里的 Cache-Control / Expires 字段去確定多長時(shí)間內(nèi)可以不去發(fā)請求詢問更新,直接使用本地緩存。

前端能做的***限度的緩存策略是:HTML 文件每次都向服務(wù)器詢問是否有更新,JS/CSS/Image資源文件則不請求更新,直接使用本地緩存。那 JS/CSS 資源文件如何更新?常見做法是在在構(gòu)建過程中給每個(gè)資源文件一個(gè)版本號或hash值,若資源文件有更新,版本號和 hash 值變化,這個(gè)資源請求的 URL 就變化了,同時(shí)對應(yīng)的 HTML 頁面更新,變成請求新的資源URL,資源也就更新了。

json 數(shù)據(jù)的緩存可以用 localStorage 緩存請求下來的數(shù)據(jù),可以在***顯示時(shí)先用本地?cái)?shù)據(jù),再請求更新,這都由前端 JS 控制。

這些緩存策略可以實(shí)現(xiàn) JS/CSS 等資源文件以及用戶數(shù)據(jù)的緩存的全緩存,可以做到每次都直接使用本地緩存數(shù)據(jù),不用等待網(wǎng)絡(luò)請求。但 HTML 文件的緩存做不到,對于 HTML 文件,如果把 Expires / max-age 時(shí)間設(shè)長了,長時(shí)間只使用本地緩存,那更新就不及時(shí),如果設(shè)短了,每次打開頁面都要發(fā)網(wǎng)絡(luò)請求詢問是否有更新,再確定是否使用本地資源,一般前端在這里的策略是每次都請求,這在弱網(wǎng)情況下用戶感受到的白屏?xí)r間仍然會(huì)很長。所以 HTML 文件的“緩存”和跟“更新”間存在矛盾。

客戶端優(yōu)化

接著輪到客戶端出場了,桌面時(shí)代受限于瀏覽器,H5 頁面無法做更多的優(yōu)化,現(xiàn)在 H5 頁面是內(nèi)嵌在客戶端 APP 上,客戶端有更多的權(quán)限,于是客戶端上可以超出瀏覽器的范圍,做更多的優(yōu)化。

HTML 緩存

先接著緩存說,在客戶端有更自由的緩存策略,客戶端可以攔截 H5 頁面的所有請求,由自己管理緩存,針對上述 HTML 文件的“緩存”和“更新”之間的矛盾,我們可以用這樣的策略解決:

  1. 在客戶端攔截請求,***請求 HTML 文件后緩存數(shù)據(jù),第二次不發(fā)請求,直接使用緩存數(shù)據(jù)。
  2. 什么時(shí)候去請求更新?這個(gè)更新請求可以客戶端自由控制策略,可以在使用本地緩存打開本地頁面后再在后臺發(fā)起請求詢問更新緩存,下次打開時(shí)生效;也可以在 APP 啟動(dòng)時(shí)或某個(gè)時(shí)機(jī)在后臺去發(fā)起請求預(yù)更新,提升用戶訪問***代碼的幾率。

這樣看起來已經(jīng)比較***了,HTML 文件在用客戶端的策略緩存,其余資源和數(shù)據(jù)沿用上述前端的緩存方式,這樣一個(gè) H5 頁面第二次訪問從 HTML 到 JS/CSS/Image 資源,再到數(shù)據(jù),都可以直接從本地讀取,無需等待網(wǎng)絡(luò)請求,同時(shí)又能保持盡可能的實(shí)時(shí)更新,解決了緩存問題,大大提升 H5 頁面首屏啟動(dòng)速度。

問題

上述方案似乎已完整解決緩存問題,但實(shí)際上還有很多問題:

  • 沒有預(yù)加載: ***次打開的體驗(yàn)很差,所有數(shù)據(jù)都要從網(wǎng)絡(luò)請求。
  • 緩存不可控: 緩存的存取由系統(tǒng) webview 控制,無法控制它的緩存邏輯,帶來的問題包括: i. 清理邏輯不可控,緩存空間有限,可能緩存幾張大圖片后,重要的 HTML/JS/CSS 緩存就被清除了。 ii.磁盤 IO 無法控制,無法從磁盤預(yù)加載數(shù)據(jù)到內(nèi)存。
  • 更新體驗(yàn)差: 后臺 HTML/JS/CSS 更新時(shí)全量下載,數(shù)據(jù)量大,弱網(wǎng)下載耗時(shí)長。
  • 無法防劫持: 若 HTML 頁面被運(yùn)營商或其他第三方劫持,將長時(shí)間緩存劫持的頁面。

這些問題在客戶端上都是可以被解決的,只不過有點(diǎn)麻煩,簡單描述下:

  1. 可以配置一個(gè)預(yù)加載列表,在APP啟動(dòng)或某些時(shí)機(jī)時(shí)提前去請求,這個(gè)預(yù)加載列表需要包含所需 H5 模塊的頁面和資源,還需要考慮到一個(gè)H5模塊有多個(gè)頁面的情況,這個(gè)列表可能會(huì)很大,也需要工具生成和管理這個(gè)預(yù)加載列表。
  2. 客戶端可以接管所有請求的緩存,不走 webview 默認(rèn)緩存邏輯,自行實(shí)現(xiàn)緩存機(jī)制,可以分緩存優(yōu)先級以及緩存預(yù)加載。
  3. 可以針對每個(gè) HTML 和資源文件做增量更新,只是實(shí)現(xiàn)和管理起來比較麻煩。
  4. 在客戶端使用 httpdns + https 防劫持。

上面的解決方案實(shí)現(xiàn)起來十分繁瑣,原因就是各個(gè) HTML 和資源文件很多很分散,管理困難,有個(gè)較好的方案可以解決這些問題,就是離線包。

離線包

既然很多問題都是文件分散管理困難引起,而我們這里的使用場景是使用 H5 開發(fā)功能模塊,那很容易想到把一個(gè)個(gè)功能模塊的所有相關(guān)頁面和資源打包下發(fā),這個(gè)壓縮包可以稱為功能模塊的離線包。使用離線包的方案,可以相對較簡單地解決上述幾個(gè)問題:

  1. 可以預(yù)先下載整個(gè)離線包,只需要按業(yè)務(wù)模塊配置,不需要按文件配置,離線包包含業(yè)務(wù)模塊相關(guān)的所有頁面,可以一次性預(yù)加載。
  2. 離線包核心文件和頁面動(dòng)態(tài)的圖片資源文件緩存分離,可以更方便地管理緩存,離線包也可以整體提前加載進(jìn)內(nèi)存,減少磁盤 IO 耗時(shí)。
  3. 離線包可以很方便地根據(jù)版本做增量更新。
  4. 離線包以壓縮包的方式下發(fā),同時(shí)會(huì)經(jīng)過加密和校驗(yàn),運(yùn)營商和第三方無法對其劫持篡改。

到這里,對于使用 H5 開發(fā)功能模塊,離線包是一個(gè)挺不錯(cuò)的方案了,簡單復(fù)述一下離線包的方案:

  1. 后端使用構(gòu)建工具把同一個(gè)業(yè)務(wù)模塊相關(guān)的頁面和資源打包成一個(gè)文件,同時(shí)對文件加密/簽名。
  2. 客戶端根據(jù)配置表,在自定義時(shí)機(jī)去把離線包拉下來,做解壓/解密/校驗(yàn)等工作。
  3. 根據(jù)配置表,打開某個(gè)業(yè)務(wù)時(shí)轉(zhuǎn)接到打開離線包的入口頁面。
  4. 攔截網(wǎng)絡(luò)請求,對于離線包已經(jīng)有的文件,直接讀取離線包數(shù)據(jù)返回,否則走 HTTP 協(xié)議緩存邏輯。
  5. 離線包更新時(shí),根據(jù)版本號后臺下發(fā)兩個(gè)版本間的 diff 數(shù)據(jù),客戶端合并,增量更新。

更多優(yōu)化

離線包方案在緩存上已經(jīng)做得差不多了,還可以再配上一些細(xì)節(jié)優(yōu)化:

公共資源包

每個(gè)包都會(huì)使用相同的 JS 框架和 CSS 全局樣式,這些資源重復(fù)在每一個(gè)離線包出現(xiàn)太浪費(fèi),可以做一個(gè)公共資源包提供這些全局文件。

預(yù)加載 webview

無論是 iOS 還是 Android,本地 webview 初始化都要不少時(shí)間,可以預(yù)先初始化好 webview。這里分兩種預(yù)加載:

  1. ***預(yù)加載:在一個(gè)進(jìn)程內(nèi)***初始化 webview 與第二次初始化不同,***會(huì)比第二次慢很多。原因預(yù)計(jì)是 webview ***初始化后,即使 webview 已經(jīng)釋放,但一些多 webview 共用的全局服務(wù)或資源對象仍沒有釋放,第二次初始化時(shí)不需要再生成這些對象從而變快。我們可以在 APP 啟動(dòng)時(shí)預(yù)先初始化一個(gè) webview 然后釋放,這樣等用戶真正走到 H5 模塊去加載 webview時(shí)就變快了。
  2. webview 池:可以用兩個(gè)或多個(gè) webview 重復(fù)使用,而不是每次打開 H5 都新建 webview。不過這種方式要解決頁面跳轉(zhuǎn)時(shí)清空上一個(gè)頁面,另外若一個(gè) H5 頁面上 JS 出現(xiàn)內(nèi)存泄漏,就影響到其他頁面,在 APP 運(yùn)行期間都無法釋放了。

預(yù)加載數(shù)據(jù)

理想情況下離線包的方案***次打開時(shí)所有 HTML/JS/CSS 都使用本地緩存,無需等待網(wǎng)絡(luò)請求,但頁面上的用戶數(shù)據(jù)還是需要實(shí)時(shí)拉,這里可以做個(gè)優(yōu)化,在 webview 初始化的同時(shí)并行去請求數(shù)據(jù),webview 初始化是需要一些時(shí)間的,這段時(shí)間沒有任何網(wǎng)絡(luò)請求,在這個(gè)時(shí)機(jī)并行請求可以節(jié)省不少時(shí)間。

具體實(shí)現(xiàn)上,首先可以在配置表注明某個(gè)離線包需要預(yù)加載的 URL,客戶端在 webview 初始化同時(shí)發(fā)起請求,請求由一個(gè)管理器管理,請求完成時(shí)緩存結(jié)果,然后 webview 在初始化完畢后開始請求剛才預(yù)加載的 URL,客戶端攔截到請求,轉(zhuǎn)接到剛才提到的請求管理器,若預(yù)加載已完成就直接返回內(nèi)容,若未完成則等待。

Fallback

如果用戶訪問某個(gè)離線包模塊時(shí),這個(gè)離線包還沒有下載,或配置表檢測到已有新版本但本地是舊版本的情況如何處理?幾種方案:

  • 簡單的方案是如果本地離線包沒有或不是***,就同步阻塞等待下載***離線包。這種用戶打開的體驗(yàn)更差了,因?yàn)殡x線包體積相對較大。
  • 也可以是如果本地有舊包,用戶本次就直接使用舊包,如果沒有再同步阻塞等待,這種會(huì)導(dǎo)致更新不及時(shí),無法確保用戶使用***版本。
  • 還可以對離線包做一個(gè)線上版本,離線包里的文件在服務(wù)端有一一對應(yīng)的訪問地址,在本地沒有離線包時(shí),直接訪問對應(yīng)的線上地址,跟傳統(tǒng)打開一個(gè)在線頁面一樣,這種體驗(yàn)相對等待下載整個(gè)離線包較好,也能保證用戶訪問到***。
  • 第三種 Fallback 的方式還帶來兜底的好處,在一些意外情況離線包出錯(cuò)的時(shí)候可以直接訪問線上版本,功能不受影響,此外像公共資源包更新不及時(shí)導(dǎo)致版本沒有對應(yīng)上時(shí)也可以直接訪問線上版本,是個(gè)不錯(cuò)的兜底方案。

上述幾種方案策略也可以混著使用,看業(yè)務(wù)需求。

使用客戶端接口

網(wǎng)路和存儲(chǔ)接口如果使用 webkit 的 ajax 和 localStorage 會(huì)有不少限制,難以優(yōu)化,可以在客戶端提供這些接口給 JS,客戶端可以在網(wǎng)絡(luò)請求上做像 DNS 預(yù)解析/IP直連/長連接/并行請求等更細(xì)致的優(yōu)化,存儲(chǔ)也使用客戶端接口也能做讀寫并發(fā)/用戶隔離等針對性優(yōu)化。

服務(wù)端渲染

早期 web 頁面里,JS 只是負(fù)責(zé)交互,所有內(nèi)容都是直接在 HTML 里,到現(xiàn)代 H5 頁面,很多內(nèi)容已經(jīng)依賴 JS 邏輯去決定渲染什么,例如等待 JS 請求 JSON 數(shù)據(jù),再拼接成 HTML 生成 DOM 渲染到頁面上,于是頁面的渲染展現(xiàn)就要等待這一整個(gè)過程,這里有一個(gè)耗時(shí),減少這里的耗時(shí)也是白屏優(yōu)化的范圍之內(nèi)。

優(yōu)化方法可以是人為減少 JS 渲染邏輯,也可以是更徹底地,回歸到原始,所有內(nèi)容都由服務(wù)端返回的 HTML 決定,無需等待 JS 邏輯,稱之為服務(wù)端渲染。是否做這種優(yōu)化視業(yè)務(wù)情況而定,畢竟這種會(huì)帶來開發(fā)模式變化/流量增大/服務(wù)端開銷增大這些負(fù)面影響。手Q的部分頁面就是使用服務(wù)端渲染的方式,稱為動(dòng)態(tài)直出,見 文章 。

***

從前端優(yōu)化,到客戶端緩存,到離線包,到更多的細(xì)節(jié)優(yōu)化,做到上述這些點(diǎn),H5 頁面在啟動(dòng)上差不多可以媲美原生的體驗(yàn)了。

總結(jié)起來,大體優(yōu)化思路就是:緩存/預(yù)加載/并行,緩存一切網(wǎng)絡(luò)請求,盡量在用戶打開之前就加載好所有內(nèi)容,能并行做的事不串行做。這里有些優(yōu)化手段需要做好一整套工具和流程支持,需要跟開發(fā)效率權(quán)衡,視實(shí)際需求優(yōu)化。

另外上述討論的是針對功能模塊類的 H5 頁面秒開的優(yōu)化方案,客戶端 APP 上除了功能模塊,其他一些像營銷活動(dòng)/外部接入的 H5 頁面可能有些優(yōu)化點(diǎn)就不適用,還需要視實(shí)際情況和需求而定。另外微信小程序就是屬于功能模塊的類別,差不多是這個(gè)套路。

這里討論了 H5 頁面首屏啟動(dòng)時(shí)間的優(yōu)化,上述優(yōu)化過后,基本上耗時(shí)只剩 webview 本身的啟動(dòng)/渲染機(jī)制問題了,這個(gè)問題跟后續(xù)的響應(yīng)流暢度的問題一起屬于另一個(gè)優(yōu)化范圍,就是類 RN / Weex 這樣的方案,有機(jī)會(huì)再探討。

責(zé)任編輯:未麗燕 來源: bang's blog
相關(guān)推薦

2018-02-06 16:21:13

H5首屏探討

2015-07-15 14:38:54

H5移動(dòng)適配

2015-09-17 10:07:33

2015-07-15 12:30:37

移動(dòng)端H5高清多屏

2022-10-26 09:01:55

H5移動(dòng)端調(diào)試

2015-12-16 12:40:32

H5緩存機(jī)制移動(dòng)

2021-06-08 05:53:31

H5 頁面項(xiàng)目劉海屏適配

2025-07-16 07:46:29

2021-06-23 06:30:14

H5 移動(dòng)端前端開發(fā)

2022-06-27 09:48:15

H5移動(dòng)互聯(lián)網(wǎng)頁面性能

2018-12-26 15:45:57

H5APP喚起

2020-06-04 16:57:07

移動(dòng)開發(fā)互聯(lián)網(wǎng)實(shí)踐

2017-11-23 18:19:58

H5

2021-07-13 06:51:16

H5web開發(fā)吸頂

2020-03-24 09:34:00

移動(dòng)端H5軟鍵盤

2019-03-20 11:20:31

VueWeb 前端

2015-12-03 15:27:46

2018-03-29 14:04:40

APPH5瀏覽器

2022-12-28 18:32:48

前端性能優(yōu)化

2015-12-03 10:47:49

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产精品美女午夜爽爽| 亚洲一区二区三区香蕉| 麻豆精品蜜桃一区二区三区| 欧美三级视频网站| 99热这里只有精品5| 午夜先锋成人动漫在线| 亚洲欧洲制服丝袜| 国产精品91久久| 欧美xxxxx少妇| 美女羞羞视频在线观看| 免费成人网www| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品久久av| 青青草福利视频| 是的av在线| 99久久婷婷国产综合精品电影| 久久视频这里只有精品| 五月婷婷深爱五月| 玖玖综合伊人| 裸体素人女欧美日韩| 亚洲国模精品一区| 国产欧美久久久久| 国内精品久久久久久久久久 | 日韩成人av网站| 日韩免费av片| av免费在线一区| 91美女片黄在线观看91美女| 91chinesevideo永久地址| 好吊操视频这里只有精品| 亚洲国产精品精华素| 国产成人一区在线| 欧美成人精品激情在线观看| 三级黄色片免费看| 日本色护士高潮视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 91大片在线观看| 欧美成人三级视频| www.爱久久| 红桃视频成人在线观看| 免费99视频| 超碰免费在线97| 亚洲美洲欧洲综合国产一区| 日韩成人高清在线| 麻豆av免费在线| 91高清在线视频| 狠狠色丁香婷婷综合久久片| 欧美成人手机在线| 日韩一级片在线免费观看| 四虎影视精品永久在线观看| 亚洲免费观看高清完整版在线观看熊| 91一区二区三区| 91尤物国产福利在线观看| 中文字幕一区二区三区欧美日韩 | 国产高清免费在线观看| 美女视频黄a大片欧美| 日韩在线免费高清视频| 天天操精品视频| 俄罗斯一级**毛片在线播放| 91首页免费视频| 国产精品国产一区二区| 天天干,天天干| 91精品国产麻豆国产在线观看| 欧美mv日韩mv| 欧美成人黑人猛交| 在线观看福利电影| 国产精品夫妻自拍| 国产精品一区二区三区精品| 成人激情四射网| 国产福利不卡视频| 超碰97国产在线| 中文字幕在线天堂| 亚洲国产一成人久久精品| 最近2019中文字幕一页二页 | 国产在线观看91一区二区三区| 欧美性感一类影片在线播放| 台湾无码一区二区| 国产大学生校花援交在线播放 | 国产白袜脚足j棉袜在线观看| 91成人福利| 欧美色精品在线视频| 最新av网址在线观看| 日本不卡免费播放| 国产91精品久久久久久久网曝门| 国产成人中文字幕| 丰满人妻一区二区三区四区| 在线国产欧美| 久久久精品国产亚洲| 亚洲熟妇一区二区三区| 精品国产91乱码一区二区三区四区| 日韩欧美一二区| 亚洲成人天堂网| 亚洲日本天堂| 欧美日韩精品一区二区三区| 成年人视频观看| 亚洲色图美国十次| 天天色综合成人网| 最近中文字幕一区二区| 性xxxxfreexxxxx欧美丶| 色av一区二区| 久久久噜噜噜www成人网| 蜜臀av在线播放| 亚洲欧美中日韩| 亚洲精蜜桃久在线| 国产在线视频资源| 97se亚洲国产综合自在线观| 国产91亚洲精品一区二区三区| 亚洲熟妇av乱码在线观看| 久久午夜精品| 欧美亚洲国产另类| 一级片中文字幕| 国产日韩欧美高清免费| 久久久免费高清电视剧观看| 欧美黑人猛猛猛| 亚洲成人精品| 国产mv免费观看入口亚洲| 中文字幕在线欧美| 久久精品动漫| 91香蕉电影院| www.av网站| 国产视频一区二区在线| 欧美午夜免费| 精品乱码一区二区三四区视频| 国产精品久久福利| 99热成人精品热久久66| 在这里有精品| 久久精品国产v日韩v亚洲| 特一级黄色大片| 国产精品白丝av| 国产精品日韩高清| 免费网站成人| 欧美在线短视频| 成年人在线观看av| 亚洲一级二级| 91亚色免费| h网站久久久| 亚洲成人综合视频| 久久综合九色综合88i| 日本免费精品| 亚洲第一天堂无码专区| 91国模少妇一区二区三区| 国产欧美日韩在线一区二区| 午夜精品福利电影| 国产寡妇亲子伦一区二区三区四区| 国产毛片在线视频| 成人18在线| 国产日产欧美一区二区视频| 成人免费观看在线| 伊人网在线播放| 精品国产精品网麻豆系列| 制服丝袜第二页| 欧美日韩伦理| 日本午夜在线亚洲.国产| 色网站免费观看| 国产日韩成人精品| 日本熟妇人妻xxxxx| 日韩成人av在线资源| 性欧美xxxx视频在线观看| 欧美 日韩 人妻 高清 中文| 日本一区二区三区在线不卡| 免费成人进口网站| 国产无遮挡裸体视频在线观看| 一本色道a无线码一区v| 在线视频日韩欧美| 亚洲成人一区| 91视频最新| hd国产人妖ts另类视频| 在线一区二区三区做爰视频网站| 在线免费黄色网| 久久久精品久久久久久96| 91在线免费观看网站| 污视频网站免费在线观看| 欧美成人三级在线| 五月天综合在线| 久久免费视频色| www.夜夜爱| 国产精品视频3p| 久久精品国产v日韩v亚洲| 国产免费久久久| 亚洲午夜影视影院在线观看| xxx国产在线观看| 久久精品国内一区二区三区水蜜桃| 91久久精品日日躁夜夜躁国产| 先锋成人av| 日韩精品在线观看一区| 欧美日韩国产精品一区二区三区| 久久久精品五月天| 亚洲综合首页| **在线精品| 91精品国产入口在线| 免费看污片网站| 老司机午夜精品| 欧美一区二区影视| 2020国产在线| 亚洲日本成人女熟在线观看| 日韩欧美一区二区一幕| 久久久久久久久97黄色工厂| 久久人人爽人人爽人人av| 欧美交a欧美精品喷水| 欧美另类交人妖| 一起草av在线| 亚洲大片在线观看| 香蕉久久久久久久| 久久精品一区二区三区中文字幕 | 日韩有码一区| 国产欧美日韩精品丝袜高跟鞋| 日韩大胆视频| 欧美日韩亚洲丝袜制服| 国产精品变态另类虐交| 国产精品系列在线播放| 97在线播放视频| 亚洲天堂一区二区三区四区| 久久久久久欧美精品色一二三四| av中文字幕在线观看第一页| 亚洲人成亚洲人成在线观看| 亚洲va欧美va| 一区二区三区四区国产精品| 中文字幕第10页| 久久精品亚洲| 九色自拍视频在线观看| 黑人久久a级毛片免费观看| 久久中文精品视频| 天堂成人在线| 色婷婷综合久久久久中文一区二区 | 国产亚洲精品超碰| zjzjzjzjzj亚洲女人| 欧美日韩18| 国产不卡一区二区在线观看 | 在线电影院国产精品| 成人无码精品1区2区3区免费看| 日韩国产精品大片| 日韩亚洲欧美精品| 狼人精品一区二区三区在线| 91色中文字幕| 日韩欧美三区| 国产精品视频yy9099| 欧美猛烈性xbxbxbxb| 日韩久久免费电影| 高清毛片aaaaaaaaa片| 精品久久久久国产| 欧美精品入口蜜桃| 亚洲欧美日韩国产综合| 激情五月深爱五月| 国产女人aaa级久久久级| 四虎影成人精品a片| 91在线小视频| 国产精品久久AV无码| 久久综合中文| 久久美女福利视频| 亚洲一区自拍| 在线视频欧美一区| 91成人精品在线| αv一区二区三区| 午夜视频在线观看精品中文| 91亚洲国产成人精品性色| 一区二区三区| 欧美一级成年大片在线观看| av在线网页| 51精品国产黑色丝袜高跟鞋| 国产免费拔擦拔擦8x高清在线人| 久久人91精品久久久久久不卡| 黑人玩欧美人三根一起进| 欧美高清一级大片| 黄色国产在线| 亚洲天堂成人在线视频| 成人精品一区二区三区免费| 中文字幕在线观看亚洲| 天堂v在线观看| 亚洲福利在线看| 桃花色综合影院| 日韩精品www| 成人网视频在线观看| 久久五月情影视| 欧美巨大xxxx做受沙滩| 欧美精品久久久久a| 波多野结衣在线影院| 中文字幕精品网| 国产写真视频在线观看| 亚洲视频在线看| 免费在线看黄网站| 久久久久久久久久久成人| 天堂电影一区| 国产精品永久免费| 日本一区精品视频| 久久福利电影| 日韩精品一区二区久久| 久久手机视频| 日韩精品欧美| 国产3p露脸普通话对白| 日本伊人色综合网| 北条麻妃在线观看| 玖玖精品视频| 1314成人网| 久久综合九色综合欧美98| 中文字幕在线观看二区| 亚洲午夜精品在线| 国产一卡二卡三卡| 日韩免费在线观看| 极品白浆推特女神在线观看| 久久久精品电影| 精品国产第一福利网站| 91高清视频免费观看| 欧美黄色a视频| 国产综合18久久久久久| 成人av资源网址| 日韩国产欧美一区| 欧美性色综合| 五月激情婷婷在线| 蜜桃传媒麻豆第一区在线观看| 原创真实夫妻啪啪av| 久久久精品国产99久久精品芒果| 国产第一页浮力| 日韩毛片高清在线播放| 天海翼一区二区| 欧美精品自拍偷拍动漫精品| 亚洲三区在线播放| 亚洲国产欧美精品| 欧美猛烈性xbxbxbxb| 国产91在线播放九色快色| 1204国产成人精品视频| 亚洲三区在线| 香蕉成人久久| 黄色国产在线视频| 国产精品不卡一区二区三区| 69成人免费视频| 欧美在线一二三四区| 日韩中文字幕免费观看| 久热精品在线视频| 第四色男人最爱上成人网| 国产精品毛片一区视频| 51精产品一区一区三区| 一级在线免费视频| 久久久久久久网| 日操夜操天天操| 欧美大黄免费观看| 国产一二区在线| 91久久精品视频| 99久久综合| 欧美图片激情小说| 国产在线精品免费av| 国产精品熟妇一区二区三区四区 | 黑人巨大精品| 鲁丝一区鲁丝二区鲁丝三区| 日韩视频在线一区二区三区| 9.1在线观看免费| 亚洲一级在线观看| 亚洲精品成av人片天堂无码| 久久久国产成人精品| 96视频在线观看欧美| 中文字幕成人一区| 九九久久精品视频| 熟妇无码乱子成人精品| 国产精品国产三级国产aⅴ入口 | 免费看欧美美女黄的网站| 国产真实乱人偷精品人妻| 国产精品美女久久久久久久久久久| 天天做夜夜爱爱爱| 亚洲一二三四区不卡| 国产成人麻豆精品午夜在线| 欧美成人免费在线视频| 99re热精品视频| 国产 日韩 欧美在线| 成人av在线一区二区三区| 成人激情五月天| 在线观看国产精品网站| 成人好色电影| 成人av.网址在线网站| 日韩av资源网| 欧美国产激情视频| 国产精品一区二区x88av| 成人免费毛片东京热| 日韩精品一区二区三区四区视频 | 欧美中文字幕视频| 国产精品2区| 色噜噜狠狠色综合网| 亚洲国产mv| 国产精品中文久久久久久| 亚洲一级电影视频| 日本天堂在线| 国产日韩欧美中文在线播放| 九九亚洲视频| 粉色视频免费看| 亚洲综合色视频| 免费黄色片在线观看| 国产在线视频2019最新视频| 激情av一区| 久草福利在线观看| 国产精品乱子久久久久| 国产乱码精品一区二区| 中文字幕亚洲无线码a| 日韩高清在线观看一区二区| 欧洲黄色一级视频| 国产精品福利一区二区| 婷婷视频在线观看| 国产美女精品视频免费观看| 伊人久久婷婷| 999精品视频在线观看播放| 亚洲国产精品一区二区久| 亚洲精品成a人ⅴ香蕉片| 日本中文字幕网址| hitomi一区二区三区精品|