Мой случай довольно прост. Я хочу отобразить пользовательскую автономную страницу, когда я обновляю sh страницу и у меня нет сетевого подключения.
Поэтому я создаю приложение vue, используя cli с рабочим окном pwa.
Вот как vue .config. js выглядит так:
module.exports = {
pwa: {
workboxPluginMode: 'InjectManifest',
workboxOptions: {
swSrc: 'public/service-worker.js',
swDest: 'service-worker.js',
}
}
};
Я добавляю это содержимое в public/offline.html
:
<html>I'm the offline page</html>
В public/service-worker.js
я делаю иметь этот код:
// public/service-worker.js
const offlinePage = '/offline.html';
workbox.setConfig({
debug: true
});
workbox.core.setCacheNameDetails({ prefix: 'my-app' });
self.addEventListener('message', event => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
});
const customHandler = async args => {
console.log('in customHandler!!1 route');
return (await caches.match(offlinePage));
};
workbox.routing.registerRoute('/', customHandler);
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
и выполнить эту команду:
npm run build && http-server -p 3001 dist
Теперь я go в браузере на localhost: 3001 и приложение работает: Service worker has been registered.
Также я вижу, что страница /offline
кэшируется.
Проблема заключается в том, что я включаю флажок "Автономный" и refre sh.
Я получил 404. а не офлайн-страницу.
И самое странное, что У меня ничего нет в кеш-памяти .
Не знаю, почему это происходит. как обслуживать автономную страницу при потере сетевого подключения?