我正在构建一个渐进式Web应用程序,因此需要聘请一名服务人员。我已经成功做到了,但是当我运行Lighthouse和/或尝试脱机工作时,看起来适用于manifest.json的URL不适用于该工作线程。我使用CakePHP作为后端,它使用mod_rewrite重写URL,例如:domain.com/controller/action
。因此,gamesite.com/games
返回控制器Game的索引页。
从灯塔出发:
Service worker does not successfully serve the manifest's start_url, Timed out waiting for fetched start_url.
在我的manifest.json中,
"start_url": "/games",
我的worker.js:
self.addEventListener('install', e => {
e.waitUntil(
caches.open(cacheName).then(cache => {
return cache.addAll([
'js/compiled/inside.js',
'games'
])
.then(() => self.skipWaiting());
})
);
});
我很好地存储了已编译的.js,但是我需要获取start_url本身,该文件已被mod_rewrite
隐藏/重写。当然,当我简单地放置“游戏”时,它会认为它是一个目录并将其视为字符串,这两个目录都不能被缓存。 每个教程,我都引用了index.html或类似内容,但我无权访问。我怀疑如果要投入生产,我可以对URL进行硬编码,但是现在无论如何这都是不可能的,我需要使它在本地运行。