Да, это возможно довольно тривиально с сервисными работниками.Все, что вам нужно сделать, это правильно настроить navigateFallback
свойство sw-precache
.Он должен указывать на кешируемый ресурс , который вы хотите, чтобы сервисный работник получал, если он обнаружил пропадание кэша.
В шаблоне, который вы разместили, вам будет хорошо, если вы настроите свойПлагин SWPrecache Webpack выглядит следующим образом:
new SWPrecacheWebpackPlugin({
...
navigateFallback: '/index.html'
...
})
Опять же, абсолютно обязательно, чтобы вещь, которую вы помещаете внутрь navigateFallback
, уже кэшировалась сервисным работником, иначе это произойдет молча.
Вы можете проверить, правильно ли все настроено, проверив две вещи в вашем веб-пакете, сгенерированном service-worker.js
:
- Массив precacheConfig содержит
['/index.html', ...]
- в перехватчике выборки работника службы(внизу файла) переменная
navigateFallback
имеет значение, которое вы настроили
Если ваше окончательное приложение размещено в подкаталоге, например, при размещении его на страницах Github, вытакже необходимо правильно настроить параметры stripPrefix
и replacePrefix
.