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

vis*_*pta 4 javascript caching cache-control browser-cache service-worker

我可以使用删除方法删除缓存数据。但我想使用过期时间自动删除缓存数据。例如,它应该在 6 小时内被删除。

caches.delete(cacheName).then(function(boolean) {
  // your cache is now deleted
});
Run Code Online (Sandbox Code Playgroud)

eka*_*ans 9

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

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;
  })
})
Run Code Online (Sandbox Code Playgroud)