Подтвердить что ты не робот

Частота обновления работоспособности службы поддержки (каждые 24 часа?)

По этот документ в MDN:

После этого он загружается каждые 24 часа или около того. Это может быть скачан более часто, но он должен загружаться каждые 24 часа предотвратить неправильные скрипты слишком долго.

То же самое верно для Firefox и Chrome? ИЛИ обновляется для рабочего Javascript, только когда пользователь переходит на сайт?

4b9b3361

Ответ 1

Примечание: Начиная с Firefox 57, поведение по умолчанию изменилось на учет для обновленная спецификация рабочего специалиста. В Firefox 57+ директивы кэширования HTTP по умолчанию будут игнорироваться при проверке службы-службы script для обновлений. Описание ниже по-прежнему относится к Chrome с октября 2017 года.

Каждый раз, когда вы переходите на новую страницу под областью рабочего стола, Chrome делает стандартный HTTP-запрос для ресурса JavaScript, который был передан вызову navigator.serviceWorker.register(). Предположим, что он называется service-worker.js. Этот запрос создается только в сочетании с навигацией или когда работник службы проснулся через, например, событие push. Существует не фоновый процесс, который повторяет каждый рабочий-сервис script каждые 24 часа или что-то автоматическое.

Этот HTTP-запрос будет подчиняться стандартным директивам кеша HTTP, за одним исключением (которое рассматривается в следующем абзаце). Например, если ваш сервер установил соответствующие заголовки HTTP-ответа, которые указывали, что кешированный ответ должен использоваться в течение 1 часа, то в течение следующего часа запрос браузера на service-worker.js будет выполняться кешем браузера. Обратите внимание, что мы не говорим о API кэширования кэша, что не имеет отношения к этой ситуации, а скорее стандартный HTTP-кеширование браузера.

Единственное исключение для стандартных правил кэширования HTTP, и это то, что происходит в течение 24 часов, заключается в том, что браузеры всегда будут подключаться к сети, если возраст элемента service-worker.js в кеше HTTP превышает 24 часа, Таким образом, функционально, нет никакой разницы в использовании max-age 1 дня или 1 недели или 1 года - все они будут рассматриваться так, как если бы max-age составлял 1 день.

Поставщики браузеров хотят, чтобы разработчики случайно не выкатили "сломанный" или "глючный" service-worker.js, который обслуживается с max-age в течение 1 года, оставив пользователям то, что может быть постоянным, сломанным веб-интерфейсом для длительный период времени. (Вы не можете полагаться на своих пользователей, зная, что они очищают данные своего сайта или перегружают сайт.)

Некоторые разработчики предпочитают явно обслуживать свои service-worker.js с заголовками ответов, заставляя все кэширование HTTP быть отключенными, что означает, что сетевой запрос для service-worker.js создается для каждой навигации. Другой подход может заключаться в использовании очень короткого времени max-age - на минуту - для обеспечения некоторой степени дросселирования в случае, если существует очень большое количество быстрых навигаций от одного пользователя. Если вы действительно хотите свести к минимуму запросы и уверены, что в ближайшее время вы не будете обновлять свой service-worker.js, вы можете установить max-age в течение 24 часов, но я бы рекомендовал пойти с чем-то коротким, вам неожиданно нужно перераспределить.