В настоящее время разработка веб-страницы может включать в себя массу технологий, включая сложную логику JavaScript, множественные зависимости, выборку API, данные BLOB и многое другое. Все это может сказаться на производительности вашего любовно созданного веб-сайта. Однако существует несколько способов оптимизировать производительность веб-страницы, например, гидратация и отложенная загрузка. И вот здесь на помощь приходят сервис-воркеры с собственным интерфейсом кэширования, который немного упрощает эту оптимизацию.
Обзор :
Сервисные работники — это активы JavaScript, которые действуют как прокси между браузерами и серверами, предлагая невероятную полезность и решая сложные проблемы. Они могут повысить надежность вашего приложения, предоставив автономный доступ и повысив производительность страницы.
Сервисные работники используют подход прогрессивного улучшения, что означает, что процесс повышения происходит в несколько этапов. При самом первом посещении вашей веб-страницы они устанавливаются со своими базовыми функциями. После первоначальной установки они работают в фоновом режиме для повышения надежности и скорости.
Более того, сервис-воркеры являются усовершенствованием существующих веб-сайтов, а это означает, что если браузер, который не поддерживает сервис-воркеров, посещает страницу, базовая функциональность веб-страницы не сломается.
Пример: подумайте, что происходит, когда вы заходите в магазин и загружаете приложение.
- Делается запрос на загрузку приложения.
- Приложение скачивается и устанавливается.
- Приложение готово к использованию и может быть запущено.
- Приложение обновляется для новых выпусков.
Точно так же эта служба устанавливается при первом посещении и постепенно улучшается благодаря интерфейсу кеша.
Неотъемлемым аспектом технологии сервис-воркеров является интерфейс кэширования, представляющий собой механизм кэширования, полностью отдельный от кэша HTTP. Доступ к этому интерфейсу кеша можно получить как в рамках сервисного работника, так и в рамках основного потока, и его можно программировать с помощью JavaScript, что открывает массу возможностей. Это означает, что вы можете использовать его на основе любой логики, которая лучше всего подходит для данного веб-сайта. Например:
- Обновляйте устаревшие или старые данные в фоновом режиме, перехватывая пользовательский опыт.
- Сохраняйте разметку страницы в кэше, чтобы пользователь мог иметь доступ в автономном режиме
- Храните статические ресурсы в кэше и обслуживайте их при каждом последующем запросе.
- Потоковое частичное содержимое из сети и сборка его с помощью оболочки приложения.
Это некоторые из примеров стратегий кэширования, которые делают возможным работу в автономном режиме и могут обеспечить более высокую производительность без каких-либо проверок повторной проверки с высокой задержкой.
Сервисные работники управляются событиями, они зависят от обратных вызовов, а передача данных по сети по своей природе асинхронна. Требуется время, чтобы запросить актив, чтобы сервер ответил и загрузил сервисные работники, которые компенсируют эту асинхронность через API, управляемый событиями, используя обратные вызовы для событий. такой как:
- Когда сервис-воркер устанавливает
- Когда сервис-воркер активируется
- Когда сервис-воркер обнаруживает сетевой запрос.
Эти события можно зарегистрировать с помощью знакомого API addEventListener.
Предварительное кэширование и кэширование во время выполнения
Интерфейс кэширования сервис-воркеров имеет две концепции кэширования: предварительное кэширование и кэширование во время выполнения. Каждый из них является центральным для преимуществ, которые может предоставить сервисный работник.
Предварительное кэширование — это процесс предварительного кэширования ресурсов, обычно во время установки сервис-воркера. Во время этого процесса ключевые статические активы и материалы, необходимые для автономного доступа, могут быть загружены и сохранены в экземпляре кэша. Это также может помочь повысить скорость страницы для последующих страниц, требующих предварительно кэшированных ресурсов.
С другой стороны, кэширование во время выполнения — это когда стратегия кэширования применяется к ресурсам по мере их запроса из сети во время выполнения. Это помогает гарантировать автономный доступ к страницам и ресурсам, которые пользователь уже посетил, что делает его похожим на приложение.
В сочетании эти подходы к использованию интерфейса кеша в сервис-воркере обеспечивают огромные преимущества для пользователя и могут обеспечить поведение, подобное приложению, для обычной веб-страницы.
Сервисные работники изолированы от основного потока в постоянно меняющейся проблеме для Интернета, и с точки зрения пользователя это зависит от устройства и его высокоскоростного интернета. Трудно сделать высокопроизводительный веб-сайт, а сервисные работники ориентированы на пользователя, что означает, что они не основной поток для снижения производительности, которую они выполняют в фоновом режиме, не забирая ресурсы у JS.
Объем и жизненный цикл:
Область действия сервис-воркеров зависит от их местоположения в директории, если она выполняется в '/subdir/index.html' и находится в '/subdir/sw.js'. тогда его областью действия является «/subdir/» и последующие папки.
чтобы увидеть это в действии:
- Перейдите к https://service-worker-scope-viewer.glitch.me/subdir/index.html. Появится сообщение о том, что сервис-воркер не контролирует страницу. Однако на этой странице регистрируется сервис-воркер из
https://service-worker-scope-viewer.glitch.me/subdir/sw.js
. - Перезагрузите страницу. Поскольку сервис-воркер был зарегистрирован и теперь активен, он контролирует страницу. Будет видна форма, содержащая область действия сервис-воркера, текущее состояние и его URL-адрес. Примечание: необходимость перезагрузки страницы не имеет ничего общего с областью действия, а скорее с жизненным циклом сервис-воркера, который будет объяснен позже.
Независимо от области действия сервис-воркер, контролирующий страницу, может перехватывать любые сетевые запросы, в том числе запросы на ресурсы из разных источников. Область действия ограничивает, какие страницы контролируются сервис-воркером, а не запросы, которые он может перехватывать.
жизненный цикл:
- регистр
Регистрация — это начальный этап жизненного цикла сервис-воркера. Когда регистрация начинается, сервис-воркеру присваивается состояние «установка». После завершения регистрации начинается установка.
- Монтаж
Сервисный работник запускает событие установки после регистрации. install вызывается только один раз для каждого работника службы и не будет запускаться снова, пока он не будет обновлен.
- Активация
Если регистрация и установка прошли успешно, сервис-воркер активируется, и его состояние становится активным. Работа может выполняться во время активации в событии активации сервис-воркера. Типичная задача в этом событии — удалить старые кэши.
- Обновлять
Предполагая, что URL-адрес или область действия сервис-воркера не изменились, текущий установленный сервис-воркер обновляется до новой версии только в том случае, если его содержимое изменилось.
Тем не менее, одно исключение может быть, если сеансы на веб-сайте продолжительны. Это может произойти в одностраничных приложениях, где запросы навигации возникают редко. В таких ситуациях в основном потоке может быть запущено ручное обновление.
- Монтаж
Следует отметить, что обновленный сервис-воркер устанавливается вместе с предыдущим. Это означает, что старый сервис-воркер по-прежнему контролирует все открытые страницы, а после установки новый переходит в состояние ожидания, пока не будет активирован.
- Активация
Когда обновленный сервис-воркер установлен и заканчивается фаза ожидания, он активируется, а старый сервис-воркер отбрасывается. Обычная задача, выполняемая в обновленном событии активации сервисного работника, — это удаление старых кешей.
И этот жизненный цикл продолжается. Я надеюсь, что было чему поучиться, пожалуйста, поделитесь своими мыслями и поправьте меня в комментарии, если я ошибаюсь.