国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

分享一個sw對請求的監(jiān)聽處理方案

gongaiorg

監(jiān)聽所有網(wǎng)絡(luò)請求

/**
 * 捕獲所有網(wǎng)絡(luò)請求
 */
self.addEventListener('fetch', async (event) => {
    let urlObj = new URL(event.request.url);// 獲取請求的 URL
    //只允許特定域名的請求
    if ( config &&  config.appCache.host.includes(urlObj.hostname)) {
        // 捕獲所有網(wǎng)絡(luò)請求
        event.respondWith(
            (async () => {
                //獲取請求方式
                let method = event.request.method;
                //console.log('fetch',event.request.url);
                let url = event.request.url;
                // 如果是特定域名則保存到IndexedDB
                let requestManager = new RequestManager;
                const isNavigationRequest = event.request.mode === 'navigate'; // 是否為導(dǎo)航請求,用戶試圖加載一個新頁面或刷新當(dāng)前頁面
                let indexedDbManager =
                    new IndexedDbManager(config.appCache.dbName, config.appCache.storeName, config.appCache.key || 'url');
                let responsePromise;// 響應(yīng)結(jié)果
                const fileExistsInIndexedDb = await indexedDbManager.exists(url);// 獲取文件是否存在
                // 先檢查IndexedDB中是否存在請求的資源
                if (!fileExistsInIndexedDb) { // 如果文件不存在
                    responsePromise = requestManager
                        .fetchRequest(url, requestManager, indexedDbManager, isNavigationRequest, method)
                        .then((networkResponse) => {
                            return networkResponse;
                        })
                } else {
                    responsePromise = indexedDbManager.get(url); // 從IndexedDB中獲取資源
                }
                return await responsePromise;
            })()
        );
    }

});
546 0 0
0個回答

??