Следить за тенденцией PWA может быть немного сложно, давайте реализуем простого сервис-воркера и разберемся с основами включения функций обновления / обновления в проекте.
Что мы строим?
В этом примере мы создаем страницу, которая кэширует активы и отображает кнопку обновления в случае обнаружения нового сервис-воркера. Простая обработка битов данных в существующем файле сервис-воркера может заставить наши браузеры рассматривать его как новый (в нашем случае я просто изменил номер версии).
Используя Chrome DevTools, мы видим, что в кеш-хранилище доступна более новая версия. Наш новый сервис-воркер в настоящее время находится в состоянии ожидания или установлен (подробнее о состояниях ПО).
Пользователю отображается кнопка обновления, которая переключает управление на ожидающего работника службы и удаляет старые кеши.
Давайте прямо в это дело!
index.html - простая страница, состоящая из:
- 2 изображения (cat1.jpg, cat2.jpg)
- Текст титров
- Кнопка обновления (по умолчанию скрыта)
sw.js - наш служебный рабочий файл, здесь происходит волшебство!
Он заботится о:
- Установка сервис-воркера
- Кеширование файлов, указанных в массиве appCash
- Загрузка запросов из кеша или их получение обычно
- Переключение состояния sw и удаление старых кешей путем прослушивания сообщений от клиента (script.js)
script.js - Здесь много чего происходит, давайте снова разберемся на точки, но последовательно.
Клиент :
- Регистрирует сервис-воркер
- Прослушивает событие «updatefound», которое запускается, когда браузер обнаруживает более новый SW-файл.
- Копирует ссылку ожидающего / установленного сервис-воркера в переменную «newSW».
- Включает кнопку обновления, когда новый сервис-воркер завершает установку (кэширование ресурсов)
- Отправляет сообщения в sw.js с помощью функции upSW (), вызываемой при нажатии кнопки
- Перезагружает страницу при смене текущего сервис-воркера.
Получите весь проект здесь -
Использованная литература -
Как отобразить« Доступна новая версия вашего прогрессивного веб-приложения
В этой статье я покажу вам, как добавить уведомление на ваш сайт и отображать его каждый раз что есть новый… deanhume.com »