我使用 Cache storage 在客户端存储一些文件。这些文件名存储在 cached
数组中。当我在服务器上更新这些文件时,我使用 clear
HTTP 参数来清除缓存存储并从服务器重新加载它。不过浏览器缓存也会起作用,所以调用clear命令后,还需要按Ctrl+F5绕过。然后它起作用了。但是,在移动浏览器上很难按 Ctrl+F5。到目前为止,这是我的代码:
if('serviceWorker' in navigator) {
if(location.href.indexOf("?clear")!=-1) {
console.log("clearing");
caches.open('store').then(cache => (
cache.keys().then(keys =>
keys.forEach(request =>
cache.delete(request)
)
),
cache.addAll(cached)
));
}
navigator.serviceWorker
.register('/sw.js')
.then(_ => console.log('Service Worker Registered'));
}
我知道有 HTTP 标头 Clear-Site-Data: cache
和 Cache-Control: no-store
,但我不确定哪个标头会影响我应该使用哪个缓存以及 many settings 的哪个组合。我想要一个神奇的按钮,以便在 clear
命令上可靠地从服务器重新加载所有资源,并在其他情况下使用缓存存储(即使网络可离线访问)。