Можно ли обновить работника сервиса в Angular PWA, когда браузер закрыт? - PullRequest
2 голосов
/ 11 марта 2019

У меня есть приложение Angular PWA, которое проверяет наличие обновлений работника службы каждые 15 секунд, что означает, что приложение проверяет, действительны ли кэшированные статические файлы.Если было новое развертывание, работник службы автоматически обновит кэш и сообщит пользователю, что есть доступные обновления, и если он / она хочет обновить.

Этот сценарий в порядке, если пользователь в настоящее время используетприложение.Но скажем, если пользователь не использует приложение.Можно ли обновить кеш даже при закрытом браузере?Я думаю, что это возможно, поскольку после регистрации работника службы он может прослушивать push-уведомления, поэтому можно ли также автоматически обновлять кэш приложения?

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Обычно, когда браузер закрыт (не запущен), ваше приложение не может ничего сделать , включая получение push-уведомлений .Я считаю, что Android является исключением из этого, поскольку устройство обрабатывает push-уведомления, а затем запускает браузер для обработки уведомлений.

Когда браузер работает, но на вашем сайте нет открытых вкладок / окон, ваш работник службыне может вызвать какую-либо деятельность.Было несколько предложений для API, но у всех них много проблем с конфиденциальностью, и они никуда не делись.

Теоретически вы можете отправить push-уведомлений, чтобы проснуться Работник службы и проверка обновлений, но существуют квоты, ограничивающие общее количество нажатий.Большинство, если не все браузеры, также требуют, чтобы веб-толчки отображали уведомление для предотвращения молчаливого отслеживания пользователя.

Также обратите внимание, что проверка обновлений каждые 15 секунд довольно агрессивна.Вы должны убедиться, что вы не используете ресурсы устройства и не используете ресурсы полосы пропускания.Возможно, вы захотите просмотреть веб-сокеты или отправленные сервером события .Это позволит вашему серверу уведомлять активных клиентов об обновлениях.

Что касается поддержания вашего контента как можно более актуальным, я бы предложил попытаться спроектировать ваше приложение для горячего обмена кода.Таким образом, вы можете загрузить кэшированную версию сайта, проверить наличие обновлений и без проблем начать запуск обновленного кода на активном клиенте без перезагрузки.

0 голосов
/ 18 июня 2019

Если вы хотите, чтобы ваш сервисный работник обновлялся, вам следует использовать его возможности обновления - SwUpdate от'@angular/service-worker'.

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

Более подробная информация здесь

...