如何使用服务工作者或缓存对象通过 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;
  })
})