如何使用Service Worker或缓存对象通过javascript设置缓存过期时间

时间:2018-10-01 13:35:14

标签: javascript caching browser-cache service-worker cache-control

我能够使用delete方法删除缓存数据。 但是我想使用到期时间自动删除缓存数据。例如它应该在6小时内删除。

caches.delete(cacheName).then(function(boolean) {

//您的缓存现已删除 });

2 个答案:

答案 0 :(得分:1)

缓存对象中没有内置方法可以在一段时间后删除缓存,但是可以使用setTimeout()方法,该方法用于在等待指定的毫秒数后执行一次函数。因此,通过设置时间,您可以调用此delete方法并刷新数据。

https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker

以上是缓存的Google文档。希望这会帮助你。

答案 1 :(得分:1)

在将缓存的文件发送到客户端之前,您可以检查何时获取文件,如果文件太旧,则获取新文件:

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;
  })
})