我的服务人员非常简单;只是一种缓存字体,JS和其他一些项目的方法,可以加快页面性能并减少数据传输。
然而,当实时(example)导航到第二页然后使用浏览器的后退按钮显示OFFLINE页面而不是首先尝试或使用自然浏览器缓存。
SW的相关部分:
// Clear old caches when activated
self.addEventListener('activate', function(e) {
e.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== cacheName) {
console.log('[ServiceWorker] Removing old cache', key);
return caches.delete(key);
}
}));
})
);
return self.clients.claim();
});
self.addEventListener('fetch', function(event) {
event.respondWith(
// Try the cache
caches.match(event.request).then(function(response) {
// Fall back to network
return response || fetch(event.request);
}).catch(function() {
// If both fail, show a generic fallback:
return caches.match('/offline.htm');
// However, in reality you'd have many different
// fallbacks, depending on URL & headers.
// Eg, a fallback silhouette image for avatars.
})
);
});
这似乎更有可能(或可能是孤立的)Firefox(当前版本59.0.2)。