Проблема очень проста: когда ваш Service Worker запрашивает «новые» файлы, этот запрос fetch
проходит через обычный HTTP-кеш браузера. Если ресурс найден там, браузер автоматически возвращает его и не go в сеть.
Если вы посмотрите на этот фрагмент из своего кода:
return cache.addAll([
"/".
"/stylesheet.css",
...
]);
, вы увидите что имя вашей таблицы стилей всегда одинаково, независимо от содержимого. Другими словами, когда ваша таблица стилей обновляется, имя файла остается прежним. По этой причине файл уже находится в HTTP-кэше браузера, и, таким образом, SW получает его, когда запрашивает его.
Вам следует создать версию своих файлов. Обычно используется ха sh содержимого файла. С именами ha sh вы получите имена, подобные stylesheet.iudfirio132.css
, и это имя меняется каждый раз, когда файл меняет хотя бы один символ. Таким образом, новая версия вашего приложения всегда использует ресурсы с разными именами. Вы также должны иметь инструменты сборки, такие как предварительное кэширование Workbox, для обновления списка ресурсов в файле Service Worker, чтобы вам не приходилось делать это вручную. Подробнее: https://developers.google.com/web/tools/workbox/modules/workbox-precaching
Чтобы полностью уточнить тему asp здесь, я рекомендую вам прочитать эту статью в блоге "Кэширование лучших практик и макс-эйдж готч" "https://jakearchibald.com/2016/caching-best-practices/