Как разрешить зависимости динамических URL-адресов через Service worker?

Хотя я знаком с библиотеками Sw-precache и Sw-toolbox, я все еще не понимаю, как удовлетворить динамические зависимости при создании прогрессивного веб-приложения с использованием Angular.

У меня есть предварительно кэшированные bundle.js, bundle.css и некоторые статические шаблоны для моего приложения, использующие процесс сборки Sw-preache. (Предположим, что все мои шаблоны (файлы .html) зависят от bundle.js и bundle.css)

  1. Что, если я обновлю свой шаблон, который не был предварительно кэширован? Как обеспечить обновление bundle.js / css вместе с моим шаблоном.

  2. Что, если я обновлю свой шаблон, который уже предварительно кэширован. Всегда ли он обновляется вместе с предварительно кэшированными файлами bundle.js / css.

  3. Последний вариант использования, когда мой шаблон уже предварительно кэширован, но у него есть встроенный скрипт с атрибутом src, и этот файл скрипта нигде не кэшируется. Предположим, я внес некоторые изменения в шаблон, а также в файл сценария. Какой подход к кешированию я должен использовать, чтобы обеспечить обновление файла шаблона вместе с файлом сценария.

Мы не следуем чистой архитектуре оболочки приложения, это похоже на одностраничное приложение, разработанное с использованием Angular.js


person Vivek Pratap Singh    schedule 06.06.2016    source источник


Ответы (2)


Sw-Precache обновит файл, сгенерирует нового сервис-воркера, и когда вы развернете обновления для пакета js или css, вы также должны будете развернуть свой новый сервис-воркер, сгенерированный Sw-Precache.

person Matt Gaunt    schedule 06.06.2016
comment
У сервис-воркера есть собственный жизненный цикл для обновления материала .. Что делать, если шаблоны, которые не предварительно кэшируются, извлекаются из сети и зависимые CSS / js (проповедуемые) не обновляются в это время из-за того, что событие активации не сработало? Ты меня понял? - person Vivek Pratap Singh; 07.06.2016
comment
Что ж, если вы обслуживаете html-страницу, он не будет запрашивать эти новые активы до тех пор, пока не обновится сервисный работник, который обновит html-страницу, которая затем загрузит последние активы. Если вы хотите управлять динамическим контентом, обратите внимание на следующее в sw-preache: github .com / GoogleChrome / sw-precache # runtimecaching-arrayobject. - person Matt Gaunt; 07.06.2016

Как общая идея, хешируйте все ресурсы, которые вы предварительно кэшируете, и выполняйте хеширование хешей и включайте этот дайджест в сервис-воркер, чтобы при изменении одной из зависимостей дайджест изменился, и ваш сервис-воркер обновил запуск нового установка событие. Имеет ли это смысл?

person Salva    schedule 21.06.2016
comment
Да, это имеет смысл. Но меня беспокоит, что, если мои шаблоны не кэшированы, а связанные с ними js / css предварительно кэшированы. Тогда будет случай, когда любые изменения, внесенные в шаблоны, связанные с ним js / css не будут выбраны с немедленным эффектом. ? - person Vivek Pratap Singh; 22.06.2016
comment
Изменяет ли как-то изменение шаблона ваши бандлы? Если это так, хеши для ваших пакетов изменятся, и ваш сервисный работник обновится. В противном случае вам следует добавить хеш ваших шаблонов к хешам хешей. - person Salva; 22.06.2016