gpt4 book ai didi

javascript - Service Worker 获取数据时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:51 24 4
gpt4 key购买 nike

我正在使用下面的脚本从服务 worker 那里获取 bootstrap.min.js 文件,但在网络面板中它显示了 1 个对 bootstrap.min.js 的请求,而所有其他请求则显示了 2 个请求,我已附上屏幕截图,有人可以帮我解决这个问题吗?

var CACHE_VERSION = 8;

var CURRENT_CACHES = {
prefetch: 'prefetch-cache-v' + CACHE_VERSION,
font: 'font-cache-v' + CACHE_VERSION
};

//安装服务 worker

self.addEventListener('install', function(event) {
var now = Date.now();

var urlsToPrefetch = [
'/themes/2.0/fluid/public/responsive/js/bootstrap.min.js'
];

console.log('Handling install event. Resources to prefetch:', urlsToPrefetch);

event.waitUntil(
caches.open(CURRENT_CACHES.prefetch).then(function(cache) {
var cachePromises = urlsToPrefetch.map(function(urlToPrefetch) {
console.log("comes here23");
var url = new URL(urlToPrefetch, location.href);
url.search += (url.search ? '&' : '?') + 'cache-bust=' + now;

var request = new Request(url, {mode: 'no-cors'});

return fetch(request).then(function(response) {
if (response.status >= 400) {
throw new Error('request for ' + urlToPrefetch +' failed with status ' + response.statusText);
}
// Use the original URL without the cache-busting parameter as the key for cache.put().
return cache.put(urlToPrefetch, response);
}).catch(function(error) {
console.error('Not caching ' + urlToPrefetch + ' due to ' + error);
});
});

return Promise.all(cachePromises).then(function() {
console.log('Pre-fetching complete.');
});
}).catch(function(error) {
// console.error('Pre-fetching failed:', error);
})

);
});

//从 Service Worker 获取请求

self.addEventListener('fetch', function(event) {

event.respondWith(


caches.match(event.request).then(function(response) {
if (response) {
console.log("comes here", event.request);
return response;
}
console.log("no cache exists");

return fetch(event.request).then(function(response) {
return response;
}).catch(function(error) {

throw error;
});

})

);
});

Network

最佳答案

任何遇到上述问题的人都可以使用此代码,这可能对某人有帮助

var CACHE_NAME = 'cache-v1';

var REQUIRED_FILES = [
'/themes/2.0/fluid/public/responsive/js/bootstrap.min.js'
];

安装

self.addEventListener('install', function(event) {
// Perform install step: loading each required file into cache
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
// Add all offline dependencies to the cache
return cache.addAll(REQUIRED_FILES);
})
.then(function() {
// At this point everything has been cached
return self.skipWaiting();
})
);
});

激活

self.addEventListener('activate', function(event) {
// Calling claim() to force a "controllerchange" event on navigator.serviceWorker
event.waitUntil(self.clients.claim());
});

获取

self.addEventListener('fetch', function(event) {
const requestURL = new URL(event.request.url);
if (/^(\/2.0\/)/.test(requestURL.pathname)) {
event.respondWith(
caches.open(CACHE_NAME)
.then(function(cache) {
return cache.match(event.request)
.then(function(response) {
if (response) {
return response;
}
return fetch(event.request);
});
})
);
}
});

关于javascript - Service Worker 获取数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com