日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁(yè) > 開(kāi)發(fā) > HTML5 > 正文

HTML5頁(yè)面無(wú)縫閃開(kāi)的問(wèn)題及解決方案

2024-09-05 07:23:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在傳統(tǒng)的 web 優(yōu)化中,我們可以采取壓縮、拆包、動(dòng)態(tài)加載等方法減少首屏資源大小,也能通過(guò)離線包、頁(yè)面直出等方案加速 html 返回,之前一篇h5 秒開(kāi)大全有部分簡(jiǎn)析。在大部分場(chǎng)景中,這些方案都足夠用,也能得到出色的效果。但仍有兩種無(wú)法盡善盡美的地方:其一是短暫的白屏現(xiàn)象不可避免,其二是對(duì)于超大型 web 應(yīng)用難以做到秒開(kāi)。結(jié)合客戶端特性,我們有沒(méi)有辦法,進(jìn)一步做到極致,打開(kāi) web 頁(yè)面和打開(kāi)客戶端頁(yè)面無(wú)差異的體驗(yàn)?zāi)兀?/p>

傳統(tǒng)方案的困境

無(wú)論是 html 離線,還是直出,以及讓 webview 啟動(dòng)和網(wǎng)絡(luò)請(qǐng)求并行 ,頁(yè)面的切換和打開(kāi)都無(wú)法避免 html 加載這一過(guò)程。對(duì)于大型應(yīng)用而言,龐大的 js 初始化解析和執(zhí)行會(huì)耗費(fèi)巨大的時(shí)間。

 

新的思考方向?

速度優(yōu)化的本質(zhì)是以空間換時(shí)間。我們是否可以從這個(gè)思路,將打開(kāi) webview 及解析 html 這以過(guò)程省略掉呢?答案是可以的。

容器化方案

容器化 即是我們最終探索與實(shí)踐的出來(lái)的一套方案。正常 web 頁(yè)面關(guān)閉后,webview 組件即會(huì)銷毀掉,下一次再打開(kāi)需要重新啟動(dòng)。通常讓 webview 保持常駐的做法可以節(jié)省 webview 啟動(dòng)時(shí)間, 但簡(jiǎn)單的常駐 webview 并不能做到頁(yè)面秒開(kāi),頁(yè)面打開(kāi)仍然需要重新解析 html。

對(duì)于我們的應(yīng)用特征而言,頁(yè)面切換實(shí)際上是僅僅內(nèi)容數(shù)據(jù)的變化,比如切換一篇文檔,其 html 容器及樣式都是同一套,而差異僅僅只是在數(shù)據(jù)上,重新載入 html 及初始化 js 這部分耗時(shí)完全可以避免掉。讓 webview 組件及其容器內(nèi)的 html 頁(yè)面常駐,在文檔切換的過(guò)程,僅僅對(duì)數(shù)據(jù)進(jìn)行替換,這即是容器化方案。容器化方案省去了 webview 重復(fù)啟動(dòng)和渲染 html 的問(wèn)題,打開(kāi)文檔,耗時(shí)只在做數(shù)據(jù)替換,真正做到了秒開(kāi)。

容器切換

web 側(cè)如何感知到不同的頁(yè)面在進(jìn)行互切換,數(shù)據(jù)如何做到替換呢?

首先在 app 打開(kāi)的時(shí)候,文檔列表會(huì)進(jìn)行數(shù)據(jù)預(yù)拉取,同時(shí)觸發(fā)客戶端預(yù)啟動(dòng)容器,除此外,其他任意場(chǎng)景也能按需觸發(fā)容器啟動(dòng)(后面會(huì)聊到)。容器內(nèi)會(huì)提前進(jìn)行 html 渲染和 js 執(zhí)行,此時(shí)的數(shù)據(jù)是空的。用戶點(diǎn)擊文檔,客戶端會(huì)對(duì)打開(kāi) url 這一行為進(jìn)行監(jiān)聽(tīng),同時(shí)解析 url,取出唯一標(biāo)識(shí)符, 判斷本地是否已經(jīng)存在并且符合要求的數(shù)據(jù),如果條件命中,直接使用已經(jīng)打開(kāi)的容器切出,通知到容器內(nèi)的 web,web 收到通知,通過(guò) url 取出標(biāo)識(shí)符,從本地進(jìn)行數(shù)據(jù)獲取,然后對(duì)數(shù)據(jù)進(jìn)行替換渲染,從而完成頁(yè)面切換。

容器化數(shù)據(jù)替換

直接容器替換的思路省去了代碼加載和解析時(shí)間,但對(duì)于前端代碼而言,需要支持直接替換數(shù)據(jù)。大部分前端項(xiàng)目代碼設(shè)計(jì)都是 自執(zhí)行調(diào)用 方式,支持容器化的前提是:需要對(duì)代碼改造成可支持 數(shù)據(jù)組裝和銷毀

// 大部分應(yīng)用加載頁(yè)面初始化的場(chǎng)景class App {    public init() {     initA();     initB();        // 初始化各種模塊        ...    }} const app = new App();app.init();

自執(zhí)行調(diào)用后,大量的內(nèi)部依賴模塊也依次進(jìn)行初始化,然后數(shù)據(jù)常駐在內(nèi)存中,通常對(duì)于加載一個(gè)正常網(wǎng)頁(yè)而言,用戶每次都是新開(kāi)頁(yè)面,加載 html, 重新進(jìn)行解析和初始化,并不會(huì)帶來(lái)什么問(wèn)題。但是按照容器化思路,頁(yè)面不會(huì)重新載入,只進(jìn)行數(shù)據(jù)替代,對(duì)于大型應(yīng)用而言意味著成千上萬(wàn)的模塊需要支持內(nèi)存釋放和數(shù)據(jù)切換,一旦沒(méi)有處理好,會(huì)面臨嚴(yán)重的內(nèi)存泄露和代碼健壯性問(wèn)題。如何組織和管理這些代碼,支持可插拔式,讓整個(gè)頁(yè)面初始化流程都能鏈?zhǔn)浇M裝,可以進(jìn)行配置,是進(jìn)行容器化代碼改造的難點(diǎn)。

  • 依賴倒置

依賴倒置原則的是指內(nèi)部模塊不應(yīng)該依賴外部模塊,底層模塊不應(yīng)該依賴上層模塊。

哪些才是底層模塊,哪些才是上層模塊呢?通常而言,越穩(wěn)定不變邏輯,應(yīng)該是越底層,越接近用戶交互,容易變化的部分是上層。具體層級(jí)劃分需要分析應(yīng)用的結(jié)構(gòu)和依賴關(guān)系,良好劃分層級(jí)的應(yīng)用是容器化改造的前提。

  • 職責(zé)鏈模式

職責(zé)鏈模式是指每個(gè)對(duì)象都有接受請(qǐng)求的可能,這些對(duì)象連接成一條鏈,請(qǐng)求沿著這條鏈的傳遞,直到有對(duì)象處理,這樣做的好處是減少接受者和發(fā)送者直接的耦合。比如在一個(gè)頁(yè)面加載生命周期中,我們可以讓內(nèi)部模塊到外部模塊都實(shí)現(xiàn)相應(yīng)的生命周期職責(zé),應(yīng)用啟動(dòng)和銷毀的過(guò)程,請(qǐng)求沿著指定鏈條從外到內(nèi)傳遞,也可以按需指定跳躍某個(gè)模塊,這樣大大降低了模塊之間的耦合,從而更好的管理代碼。

export default interface IRestart{    emitter: EventEmitter;    startDestroy(): void;    destroy(): void;    restart(): void;    restartEnd(): void;    // ...}
class Page {    next: PageFlow|null;    cache: {        start: (() => Promise<any>)[];        end: (() => Promise<any>)[];    };    waitStart(callback: () => Promise<any>) {        this.cache.start.push(callback);    };    waitEnd(callback: () => Promise<any>) {        this.cache.end.push(callback);    };    setNext(flow: PageFlow) {        this.next = flow;        return flow;    }     // ...   }
  • 依賴注入

所謂依賴注入是當(dāng)指 A 對(duì)象依賴另一個(gè) B 對(duì)象時(shí),不直接在 A 對(duì)象內(nèi)初始化 B,而是通過(guò)外部環(huán)境進(jìn)行初始化,作為參數(shù)傳入 A 對(duì)象中。這樣做的好處是當(dāng) B 模塊的初始化等條件發(fā)生變化時(shí),不必在 A 對(duì)象中進(jìn)行重復(fù)的修改。管理成百上千個(gè)這樣模塊相互依賴的代碼中,統(tǒng)一的依賴注入管理器會(huì)讓依賴關(guān)系管理變得更方便。

// 模塊加載器class ServiceLoader {    source: CONFIG;    loaded: boolean;    // 是否已加載    initialized: boolean;   // 是否已初始    module: any;    constructor(source: CONFIG) {        this.loaded = false;        this.initialized = false;        // ...    }    async load(params?: any): Promise<any> {     // ..load module        return this.module;    }    //...}
// 模塊管理器class ServiceCollection {    stack: ServiceLoader[];    private services = new Map<CONFIG, ServiceLoader>();    constructor() {        this.stack = [];    }    createLoader(config: CONFIG): ServiceLoader {        const loader: ServiceLoader =  new ServiceLoader(config);        this.services.set(config, loader);        return loader;    }    // ...}
initA () {    const ALoader= this.serviceCollection.createLoader(CONFIG.A);    const discussMobile = ALoader.init(this.app);}

數(shù)據(jù)預(yù)拉服務(wù)

容器是否會(huì)命中依賴兩個(gè)條件,其一對(duì)應(yīng)離線包代碼是否下載好;其二對(duì)應(yīng)版本的數(shù)據(jù)是否已經(jīng)預(yù)拉緩存完畢。

用戶進(jìn)入文檔管理首頁(yè),首先會(huì)去拉取列表索引數(shù)據(jù),然后通過(guò)列表數(shù)據(jù) id 進(jìn)行文檔內(nèi)容數(shù)據(jù)做預(yù)拉,儲(chǔ)存在本地?cái)?shù)據(jù)庫(kù),本地?cái)?shù)據(jù)庫(kù)的存儲(chǔ)可以參考前端離線化探索。

webview service

在整個(gè)數(shù)據(jù)預(yù)拉的過(guò)程,我們是通過(guò)一套獨(dú)立的客戶端后臺(tái) webview 服務(wù)執(zhí)行具體任務(wù),獨(dú)立服務(wù)的好處是讓各種容器化基礎(chǔ)服務(wù)和文檔管理列表本身進(jìn)行解耦,同時(shí)將拉取、解析、儲(chǔ)存數(shù)據(jù)這一對(duì)性能有消耗的過(guò)程放后臺(tái)服務(wù),減少了列表用戶交互界面層的性能壓力。

另一方面,作為多端公用的一個(gè)服務(wù),構(gòu)建流程上單獨(dú)部署,更新代碼的時(shí)候能夠不依賴其他頁(yè)面,變得更靈活。

數(shù)據(jù)快照

對(duì)于純 dom 結(jié)構(gòu)的文檔型品類,我們會(huì)在打開(kāi)文檔,解析數(shù)據(jù)后,把生成的 html 緩存在本地?cái)?shù)據(jù)庫(kù)一張快照表里。下一次切換容器時(shí),在取本地?cái)?shù)據(jù)去解析的同時(shí),會(huì)判斷對(duì)應(yīng) id 在快照表是否存在緩存,如果有,直接取出來(lái),覆蓋在 html 上,用戶可以提前看到上一次渲染的數(shù)據(jù),等本地?cái)?shù)據(jù)真正解析完,再展示可交互界面。解析數(shù)據(jù)準(zhǔn)備渲染也是需要一個(gè)上百毫秒的過(guò)程,這一策略可以讓用戶提前看到內(nèi)容。

預(yù)創(chuàng)建

有了極致的打開(kāi)速度,如何優(yōu)化新建速度呢。正常的新建流程是這樣的,用戶點(diǎn)擊新建按鈕,前端請(qǐng)求創(chuàng)建 cgi, 等待后臺(tái)創(chuàng)建成功返回新文檔 url,前端再新開(kāi) webview,加載展示頁(yè)面。我們可以看,由于需要等待創(chuàng)建接口返回的原因,到新建的過(guò)程比正常打開(kāi)一個(gè)文檔還要更久。

怎么樣才能讓新建也做到秒開(kāi)呢?思路和數(shù)據(jù)預(yù)拉取一樣,在用戶進(jìn)入文檔首頁(yè)的同時(shí),我們會(huì)提前預(yù)請(qǐng)求一批創(chuàng)建 id,然后緩存到本地,同時(shí)根據(jù)創(chuàng)建 id 生成一篇空白文檔數(shù)據(jù),儲(chǔ)存在本地,標(biāo)示狀態(tài)為未使用。用戶點(diǎn)擊新建按鈕,本質(zhì)上是從本地取一個(gè)未使用的文檔 url,直接用容器切換打開(kāi),然后再和后臺(tái)進(jìn)行同步。

秒開(kāi)效果

容器化方案前:

容器化方案后:

 

監(jiān)控與開(kāi)關(guān)系統(tǒng)

容器方案使用了數(shù)據(jù)預(yù)取場(chǎng)景,命中率的監(jiān)控非常重要。由于切換頁(yè)面的過(guò)程,如果命中容器,我們會(huì)接受來(lái)自客戶端的通知,在這個(gè)時(shí)機(jī),我們可以進(jìn)行上報(bào)。

另外一個(gè)非常重要的是容器能力的開(kāi)關(guān)系統(tǒng),在發(fā)布之初保持現(xiàn)網(wǎng)穩(wěn)定性是非常重要的措施,但任何程序都不能保證沒(méi)有 bug,我們通過(guò)內(nèi)部七彩石配置系統(tǒng)控制這套容器方案的各種特性在不同品類下是否啟用,同時(shí)這套配置也支持灰度和回滾方案,能夠應(yīng)急各種突發(fā)問(wèn)題。

灰度期容器間命中率

 

待優(yōu)化的問(wèn)題

容器化方案用各種預(yù)創(chuàng)建 webview 的方式換取了打開(kāi)速度,app 內(nèi)存占用上會(huì)比未使用容器化方案要大非常多,webview 的釋放時(shí)機(jī)、預(yù)加載數(shù)據(jù)的策略優(yōu)化,及從客戶端到 web 端,如何更好的做內(nèi)存管理是接下來(lái)需要進(jìn)一步優(yōu)化的點(diǎn)。

總結(jié)

到此這篇關(guān)于HTML5頁(yè)面無(wú)縫閃開(kāi)方案的文章就介紹到這了,更多相關(guān)HTML5頁(yè)面無(wú)縫閃開(kāi)內(nèi)容請(qǐng)搜索武林網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持武林網(wǎng)!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美日韩视频免费播放| 欧美日韩午夜在线视频| 99国产成 人 综合 亚洲欧美| 中文在线一区二区| 国产欧美日韩在线观看| 中文在线中文字幕| 亚洲高清精品视频| 国产一区精品| 日韩中文欧美| 五月综合激情日本mⅴ| 日韩不卡在线观看| 国产欧美日韩在线看| 91精品国产自产在线观看永久∴| 一区二区视频在线观看免费的| 国产日韩av高清| 99精品在线播放| 亚洲 欧美 中文字幕| 亚洲天堂国产视频| 免费看ww视频网站入口| 欧洲精品二区| 99pao成人国产永久免费视频| 日韩国产一区三区| 91精品视频国产| 欧美日韩一二| 日韩一二三四区| 国产中文在线观看| 一区二区中文字幕在线| 精品国产欧美成人夜夜嗨| 国产视频一二区| 中文字幕日韩精品在线| 国产专区中文字幕| 亚洲一区三区在线观看| 亚洲va久久久噜噜噜久久| 欧美日韩视频在线| 一区二区91| 久久精品国产91精品亚洲| 欧美sm一区| 中文字幕欧美人妻精品一区蜜臀| 色综合天天综合网天天狠天天 | 伊人伊成久久人综合网小说| 色www精品视频在线观看| 韩国一区二区av| 日韩欧美中文字幕精品| 日韩一二三四区| 不卡专区在线| 欧美人妻一区二区三区| 亚洲一区中文在线| 首页国产欧美久久| 亚洲图片小说综合| 国产激情在线视频| 欧美 日韩 中文字幕| 亚洲视频资源在线| 91精品日本| 91极品视频在线观看| 欧美日韩激情一区| 国产亚洲欧美色| 尤物在线精品| 婷婷精品进入| 国产在线第一页| 99视频在线看| 国产日韩中文字幕在线| 亚洲一区视频在线观看视频| 视频一区二区不卡| 综合激情一区| 日韩av一区二区在线观看| 精品国产欧美日韩| 日韩欧美中文字幕精品| 中文字幕日韩在线视频| 中文字幕在线视频日韩| 日韩精品一二三四区| 欧美日韩91| 色综合影院在线| 精品网站999www| 日韩精品在线免费播放| 国产亚洲视频中文字幕视频| 久久久精品免费免费| 国产福利一区二区| 国产成人精品免费久久久久| 在线视频不卡国产V| 日韩av综合在线观看| 日韩中文字幕视频在线| 国产欧美中文字幕| 999精品网| 最新中文字幕在线播放| 国产久卡久卡久卡久卡视频精品| 在线观看区一区二| 日韩在线视频在线观看| 日韩一级在线视频| 黄色国产网站在线播放| 丰满少妇一区| 久久久精品99| 日韩欧美中文字幕在线观看| 欧美 中文字幕| 高清一区二区| 交视频在线观看国产| 日本国产一区| 国产一级在线播放| 久久精品女人| 一区二区视频免费看| 日韩www在线| 欧美1区免费| 日韩视频在线免费看| 久久网站免费观看| 欧美亚洲国产日韩2020| 免费视频国产一区| 国产三级视频网站| 日韩精品在线视频| 麻豆精品视频入口| 国产欧美日韩视频| 91久久中文| 国产对白在线| 日韩 欧美 中文| 日韩国产欧美亚洲| 不卡视频一区二区三区| 亚洲午夜久久| 在线国产1区| 粉嫩粉嫩芽的虎白女18在线视频| 国产乱一区二区| av三级在线播放| 国产三级免费观看| 中文字幕在线欧美| 在线观看中文字幕一区| 日韩高清在线一区二区| 国产欧美日韩91| 日韩在线视频一区| 欧美久久久精品| 日韩视频第二页| 精品久久久91| 国产视频中文字幕在线观看| 精品成人久久久| 国产在成人精品线拍偷自揄拍| 日韩欧美高清在线视频| 黄色一区二区在线| 一区二区三区四区五区视频在线观看 | 国产欧美中文在线| 国产一区在线观看视频| 欧美日韩精品综合在线 | 欧美日韩高清在线播放| 国产婷婷色一区二区三区| 国产成人精品网址| 欧美日韩综合在线| 中文字幕精品一区二| 在线观看免费国产成人软件| 国产99精品| 亚洲国产欧美日韩精品| 在线视频不卡国产V| 欧美日韩综合高清一区二区 | 91精品在线观| av免费在线播放| 欧美日韩国产亚洲一区| 一区二区不卡在线| 国产中文在线播放| 日韩视频在线一区| 麻豆精品99| 国产资源在线观看| 亚洲欧洲在线观看av| xxxxx性| 精品日韩欧美| 国产嫩草影院久久久久| 91精品国产调教在线观看| 午夜一区二区三区| 一区视频在线播放| 欧美日韩亚洲综合在线| 欧洲精品二区| 欧美日韩国产中字| 成人xxxx| 精品久久久三级| 亚洲3区在线| 精品国产99久久久久久| 午夜少妇久久久久久久久| 欧美日韩亚州综合| 日韩国产一区| 亚洲综合在线不卡| 国产黄色网页| 精品日韩av| 亚洲免费精品| 日韩精品视频在线播放| 国产免费久久| 最近中文字幕日韩精品| 日韩欧美在线中文字幕| 日韩精品在线网站| 国产一区久久久| 欧美日韩国产一区中文午夜| 一区二区中文视频| 欧美日韩精品免费| 欧美日韩国产在线| 日韩在线视频网| 久久久91精品国产| 精品免费久久久| 欧美婷婷精品激情| www.91香蕉视频| 久久人人88| 国产美女主播视频一区| 欧美在线日韩在线| h片精品在线观看| 欧美二三四区| 亚洲福利一区二区三区| 成人a在线观看| 国产中文在线视频| 久久精品在线观看| 韩国v欧美v日本v亚洲| av免费在线播放| 中文天堂在线一区| 中文字幕亚洲乱码| 国产综合成人久久大片91 | 欧美性生交大片免费| 日韩在线中文视频| 精品极品三级久久久久| 国产久卡久卡久卡久卡视频精品| 日韩亚洲欧美中文高清在线| 香蕉视频亚洲一级| 欧美日韩夫妻久久| 亚洲校园欧美国产另类| 蜜臀久久精品| 日韩在线观看a| 日韩欧美三级在线| av中文资源在线| 日韩中文在线视频| 精品区一区二区| 国产一级视频| 欧美日韩国产一二| 亚洲一区中文在线| 日韩中文字幕视频网| 日韩欧美三级视频| 日韩欧美国产视频| 国产亚洲欧美色| 国产免费播放一区二区| 粉嫩粉嫩芽的虎白女18在线视频| 日韩不卡一区二区| 欧美日韩精品区| 欧美一级日韩一级| 中文欧美字幕免费| 精品国产不卡一区二区| a视频免费看| 中文字幕在线国产| 国产欧美日韩综合精品| 欧美日韩国产首页在线观看| 中文字幕亚洲欧美| 日韩久久精品成人| 日韩av一区在线| 国产嫩草影院久久久久| 亚洲综合在线视频| 欧美久久久久久蜜桃| 日韩精品在线观看视频| 欧美片网站免费| 欧美91精品| 久久91精品久久久久久秒播| 国产亚洲人成a一在线v站| 日韩欧美中文在线| 欧美日韩亚洲91| 欧美日韩中文字幕在线| 日本精品国语自产拍在线观看| 欧美日韩日本视频| 99视频在线看| 久久婷婷亚洲| 日韩精品在线观| 91麻豆精品国产91久久久使用方法 | 亚洲午夜久久| 亚洲精品欧美二区三区中文字幕 | 精品一二三四区| 91精品综合久久久久久 | 日韩在线中文字幕| 国产黄色在线播放| 中文字幕精品在线| 中文字幕线观看| 国产免费久久| www.久久久精品| 欧美不卡一二三| 国产在线观看黄色| 不卡一区2区| 国产一级久久久| 午夜影院在线观看欧美| 日韩在线 中文字幕| 日韩久久精品成人| 999精品网| 欧美久久在线| 日韩欧美在线综合网| 欧美在线亚洲一区| 日韩久久久精品| 亚洲国产www| 91麻豆视频网站| 亚洲一二三不卡| 日韩亚洲欧美中文三级| 国产黄色一区| 中文字幕狠狠干| 亚洲一区中文字幕在线观看| 欧美亚洲综合视频| 天堂精品高清1区2区3区| 欧美日韩日本视频| 中文字幕日韩免费视频| 欧美日韩国产高清| 国产一区深夜福利| 日韩中文字幕久久| 午夜一区二区三区| 午夜伊人狠狠久久| 亚洲视频中文字幕| 精品日韩视频| 亚洲一区中文| 综合激情一区| 精品亚洲成a人片在线观看| 91麻豆精品在线| 日韩亚洲不卡在线| 欧美日韩视频免费| 久久久久久91| 欧美亚洲天堂| 日韩激情一区| 午夜亚洲一区| 精品视频1区2区3区| 中文在线不卡视频| 精品久久香蕉国产线看观看gif| 亚洲免费在线视频一区 二区 | 在线视频观看日韩| 在线日韩欧美| 国产一区 二区 三区一级| 久久精品网站免费观看| 91精品免费在线观看| 国产手机精品视频| 亚洲第一视频| 91精品国产高清久久久久久| 内射国产内射夫妻免费频道| 免费视频中文字幕| 欧美不卡123| 一区二区在线高清视频| wwww亚洲| 日韩一级二级三级精品视频| 日韩欧美三级视频| av免费网站在线| 亚洲福利在线观看| 精品999在线| 亚洲国产91精品在线观看| 一区二区在线高清视频| 亚洲国产无线乱码在线观看| 精品中文在线| 日韩手机在线观看视频| 欧美高清一区| 精人妻一区二区三区| 精品视频999| 亚洲视频日韩| 久久99久久99精品中文字幕| 免费视频国产一区| 日韩一级免费视频| 中文字幕欧美亚洲| 综合图区亚洲白拍在线 | 欧美日韩国产首页| 不卡一二三区| 日本精品福利视频| 久久久精品日韩欧美| 亚洲免费播放| 国产激情99| 欧美成人精品在线| 亚洲一区日韩精品中文字幕| 亚洲图片小说综合| 日本一级一片免费视频| 中文字幕亚洲在| 国产欧美久久久久久久久| 在线不卡一区二区| 日韩不卡中文字幕| 日韩欧美中文字幕在线播放| 樱花草www在线观看| 免费在线国产| 欧美在线日韩在线| 欧美日韩在线不卡一区| 91精品国产综合久久久久| 国产福利精品导航| 欧美日韩精品在线| 欧美另类久久久品| 亚洲a一级视频| 国产123在线| 日韩欧美中文字幕视频| 欧美一级日韩不卡播放免费| 欧美一级欧美三级在线观看| 午夜一区二区三区视频| 欧美日韩高清一区二区| 日韩免费精品视频| 中文字幕伊人| 91精品国产调教在线观看| 精品在线91| 欧美激情一区二区在线| 91精品国产91| 国产区视频在线观看| 欧美片网站免费| 国产成人精品三级| 欧美日韩不卡在线视频| 欧美国产日韩在线播放| 一区二区在线观| 顶级网黄在线播放| 欧美日韩国产免费观看| 精品视频1区2区3区| 欧美一级日韩不卡播放免费| 日韩精品视频在线观看视频| 国产免费永久在线观看| 国产美女主播视频一区| 日韩中文字幕在线播放| 国产性一级片| 天天综合日日夜夜精品| 国产wwww| 日韩国产一区久久| 色www精品视频在线观看| 国产第一页在线播放| 日韩亚洲国产欧美|