我正在使用sw-precache为网络应用添加离线支持。
我的设置:
<LocationMatch "service-worker\.js.*"> Header set Cache-Control "max-age=0, no-cache" </LocationMatch>
在通常的情况下,事情看似很好。但如果由于某种原因,用户清除缓存(例如在Chrome开发工具 - >应用程序 - >清除存储(选择所有内容) - >点击“清除所选内容”,我的网页就不会# 39; t load 即使我在线,我在控制台中看到以下错误:
&#34; https://my.somedomain.com/somepath/somepage.html&#34;的FetchEvent导致网络错误响应:一个不是响应的对象被传递给respondWith()。
当我查看生成的service-worker.js时,我注意到以下代码。
// If shouldRespond was set to true at any point, then call
// event.respondWith(), using the appropriate cache key.
if (shouldRespond) {
event.respondWith(
caches.open(cacheName).then(function(cache) {
return cache.match(urlsToCacheKeys.get(url));
}).catch(function(e) {
// Fall back to just fetch()ing the request if some unexpected error
// prevented the cached response from being valid.
console.warn('Couldn\'t serve response for "%s" from cache: %O', event.request.url, e);
return fetch(event.request);
})
);
调试时,我没有看到catch块被执行。另请参见返回的对象的附加调试输出返回的catch.match传递给respondWith()
所以我的问题: