Я создаю Progressive Web App, и поэтому мне нужно сделать работника сервиса. Я успешно сделал это, но когда я запускаю Lighthouse и / или пытаюсь работать в автономном режиме, он выглядит так же, как URL-адрес, который работает для manifest.json не работает для работника. Я использую 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.
В моем манифесте. 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, но сейчас это невозможно, и в любом случае мне нужно, чтобы он работал на моем локальном компьютере.