如何使用服务工作者或缓存对象通过 javascript 设置缓存过期时间
How do i set caches expiration time through javascript using service worker or cache object
我可以使用 delete 方法删除缓存数据。
但是我想使用过期时间自动删除缓存数据。例如它应该在 6 小时内被删除。
caches.delete(cacheName).then(function(boolean) {
// your cache is now deleted
});
我们在缓存对象中没有内置方法来在一段时间后删除缓存,但我们可以使用 setTimeout() 方法,该方法用于在等待指定的毫秒数后执行一次函数.因此,通过设置时间,您可以调用此删除方法并刷新数据。
https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker
以上是缓存的 google 文档。希望这会帮助你。
在将缓存文件发送给客户端之前,您可以检查文件何时被提取,如果它太旧,则提取一个新文件:
const url = request.url;
caches.open(cacheName).then(cache => {
cache.match(url).then(response => {
if(!response) {
return fetch(url);
}
const date = new Date(response.headers.get('date'))
// if cached file is older than 6 hours
if(Date.now() > date.getTime() + 1000 * 60 * 60 * 6){
return fetch(url);
}
// else return cached version
return response;
})
})
我可以使用 delete 方法删除缓存数据。 但是我想使用过期时间自动删除缓存数据。例如它应该在 6 小时内被删除。
caches.delete(cacheName).then(function(boolean) {
// your cache is now deleted
});
我们在缓存对象中没有内置方法来在一段时间后删除缓存,但我们可以使用 setTimeout() 方法,该方法用于在等待指定的毫秒数后执行一次函数.因此,通过设置时间,您可以调用此删除方法并刷新数据。
https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker
以上是缓存的 google 文档。希望这会帮助你。
在将缓存文件发送给客户端之前,您可以检查文件何时被提取,如果它太旧,则提取一个新文件:
const url = request.url;
caches.open(cacheName).then(cache => {
cache.match(url).then(response => {
if(!response) {
return fetch(url);
}
const date = new Date(response.headers.get('date'))
// if cached file is older than 6 hours
if(Date.now() > date.getTime() + 1000 * 60 * 60 * 6){
return fetch(url);
}
// else return cached version
return response;
})
})