Javascript 如何在域下导航时停止添加未在Service Worker中声明的内容
我有一些服务人员按照预期工作,主要是按照指示获取、缓存和请求内容 但是,我注意到,除了指定的内容之外,例如在服务工作者中声明的文件/文件夹,在域中导航时,未声明的内容会添加到缓存中 顺便说一下,这是一个问题,它会使缓存空间膨胀,通常我不希望缓存它 在域下导航时,如何停止服务工作者内容添加未声明的内容 这是th SW的安装代码,它负责添加内容Javascript 如何在域下导航时停止添加未在Service Worker中声明的内容,javascript,caching,service-worker,progressive-web-apps,Javascript,Caching,Service Worker,Progressive Web Apps,我有一些服务人员按照预期工作,主要是按照指示获取、缓存和请求内容 但是,我注意到,除了指定的内容之外,例如在服务工作者中声明的文件/文件夹,在域中导航时,未声明的内容会添加到缓存中 顺便说一下,这是一个问题,它会使缓存空间膨胀,通常我不希望缓存它 在域下导航时,如何停止服务工作者内容添加未声明的内容 这是th SW的安装代码,它负责添加内容 // Declaring cache name, version, files to be cached. self.addEventListener('
// Declaring cache name, version, files to be cached.
self.addEventListener('install', function(e) {
console.log('[ServiceWorker] Install');
e.waitUntil(
caches.open(CACHE_NAME).then(function(cache) {
console.log('[ServiceWorker] DTL Install Caching App Shell');
return Promise.all([cache.addAll(FILES_TO_CACHE)]);
}).then(function() {
//skiWaiting, forza instalacion de SW.
return self.skipWaiting();
})
);
});
在导航到域的其他文件夹(但未在要缓存的内容数组中声明)时,会像往常一样触发fetch事件,以下代码是:
self.addEventListener('fetch', function(event) {
console.log('SW DTL fetch');
event.respondWith(
caches.open(CACHE_NAME).then(function(cache) {
return fetch(event.request).then(function(response) {
cache.put(event.request, response.clone());
return response;
});
})
);
});
您不必阻止任何操作,因为默认情况下,Service Worker不会自动将项添加到缓存中。实际上,您正在使用fetch
处理程序中的方法手动将项添加到缓存中
你应该使用的是
您不必阻止任何操作,因为默认情况下,Service Worker不会自动将项添加到缓存中。实际上,您正在使用fetch
处理程序中的方法手动将项添加到缓存中
你应该使用的是
event.respondWith(
caches.match(event.request).then(function (response) {
// return the response if it is found in cache
if (response) return response;
// fall back to network as usual otherwise
console.log('SW: No response found in cache. About to fetch from network...');
return fetch(event.request).then(function (response) {
return response;
});
})
);