«Доступна новая версия» с сервисным работником и sw-precache
Я пытаюсь использоватьsw-precache
но я, должно быть, делаю что-то не так!
Я в основном использую демо-код, доступный изGitHub репо и не могу получить обновления приложения, чтобы пройти. После первого кэширования он никогда не проверяет наличие новых версий.
Я ожидал, что когда я опубликую нового работника сервиса, браузер запросит нового работника сервиса и обновит кеш соответственно в фоновом режиме. Затем с помощьюрегистрационный код в примереЯ мог бы предложить пользователю обновить и получить последнюю версию из недавно обновленного кэша.
Буду очень признателен, если кто-то может указать мне в правильном направлении.
примерЧтобы продемонстрировать проблему, я создал отдельный пример:https://github.com/stevenocchipinti/sw-precache-demo
В примере используется базовый скелет изcreate-react-app
которая имеет встроенную задачу сборки, которая заботится о дактилоскопии имен файлов и т. д.
Я подозреваю, что проблема со мной, кэшируя все, используя следующиеsw-precache
конфигурации:
{
"staticFileGlobs": [ "build/**/*.*" ],
"stripPrefix": "build/"
}
В файле readme репозитория есть более точные шаги, но основные шаги, которые я предпринимаю, чтобы воспроизвести проблему, заключаются в следующем (с моими, вероятно, неверными ожиданиями).
Шаги и предположенияПерейдите к приложению для первого
Я должен увидетьContent is now available offline!
в консоли
Перезагрузить страницу
Сообщение в консоли не должно появляться снова, потому что работник службы установлен, но страница все равно должна работать.
Перейдите в автономный режим и перезагрузите страницу
Страница должна все еще работать
Внести видимые изменения в исходный код
Перестроить (запустить задачу сборки иsw-precache
)
Это где мое понимание должно быть неправильно
Перезагрузить страницу
Сервисный работник должен обновить кеш в фоновом режимеКогда это будет сделано, вы должны увидетьNew or updated content is available.
в консолиФактические видимые изменения не должны быть видны до следующей перезагрузкиПерезагрузите страницу снова
В этот раз браузер будет использовать новый кешИзменения должны быть видны сейчас!Там не должно быть никаких сообщений в консолиЭта проблемаПосле первоначального кэширования приложение никогда не обновится, если вы не отмените регистрацию работника службы или не выполните принудительную перезагрузку.
Я не уверен, как сделать эту работу - любая помощь будет принята с благодарностью!