我正在阅读一篇关于谷歌服务工作者的文章。
在“缓存和返回请求”一章中,它演示了缓存第一种方法:
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
return fetch(event.request);
}
)
);
});
在点击缓存时会立即响应,但如果缓存后响应已更改,该怎么办?据我所知,CacheStorage
与cookie不同,除非被删除,否则它不会过期。
是否有任何好的策略可以让缓存保持最新状态?
答案 0 :(得分:1)
服务工作者和缓存API用于缓存静态资产而不是数据;因此,除非有某种形式的部署,否则响应不太可能发生变化。在这种情况下,您将通知服务工作者下载下一版本的静态文件(通过更新缓存名称使缓存无效;例如通过gulp进程...等)。或者您可以使用sw-precache来完成这项工作(以及更多)。
另一方面,如果您正在缓存数据,您将使用类似于IndexedDB的东西,一旦您有活动连接,您将下载最新版本的数据。
了解详情:https://medium.com/dev-channel/offline-storage-for-progressive-web-apps-70d52695513c#.m7k9smyv6