【发布时间】:2018-01-01 23:04:12
【问题描述】:
我正在使用 Lighthouse 来审核我的 web 应用程序。我正在克服失败,但我坚持这一点:
失败:清单 start_url 没有被 Service Worker 缓存。
在我的manifest.json 我有
"start_url": "index.html",
在我的worker.js 中,我正在缓存以下内容:
let CACHE_NAME = 'my-site-cache-v1';
let urlsToCache = [
'/',
'/scripts/app.js',
'/index.html'
];
这与我在 Chrome 开发工具的“应用程序”选项卡中看到的一致:
那么...为什么它告诉我start_url 没有被缓存?
这是我完整的worker.js 文件:
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/worker.js').then(function(registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function(err) {
console.log('ServiceWorker registration failed: ', err);
});
});
}
let CACHE_NAME = 'my-site-cache-v1.1';
let urlsToCache = [
'/',
'/scripts/app.js',
'/index.html'
];
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
【问题讨论】:
-
您是否更新了缓存的名称?如果没有,servieworker 没有检测到更改并且正在使用以前的版本。您还应该检查清单中的
start_url我看到它指向“index.html”而不是“/index.html”。 -
我试过
start_url有和没有前面的斜线。我已经把它加回来了。我还将缓存重命名为my-site-cache-v1.1,现在我在缓存存储区域中看到两者,两者看起来相同。我仍然在 Lighthouse 中收到错误消息。
标签: service-worker progressive-web-apps manifest.json lighthouse