Как кэшировать подписанные файлы (Сервисный работник) - PullRequest
0 голосов
/ 30 мая 2018

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

Примеры подписей:

  • sw-d58e3582afa99040e27b92b13c8f2280.js
  • sw.js? _Gc = 20180101

Я работаю над приложением, которое уже готово, и пытаюсь внедрить работника службы, чтобы некоторые функции стали доступны в автономном режиме.

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

caches.open('my-cache').then(function(cache) {
return cache.addAll([
    '/index.html',
    '/styles.css',
    '/main.js'
]);})

Приложение всегда меняет "styles.css" на "styles.css? V = 1527624807103_1" (отметка времени) Насколько я понимаю, "styles.css"не то же самое, что "styles.css? V = 1527624807103_1".

1 Ответ

0 голосов
/ 31 мая 2018

Вам не следует указывать версию или добавлять параметр signture к URL-адресу, используемому для вашего фактического файла рабочего сервиса верхнего уровня.Как объяснено в « Service Worker Lifecycle »:

Это может привести к такой проблеме:

  1. index.html registers sw-v1.js как работник сервиса.
  2. sw-v1.js кэширует и обслуживает index.html, чтобы он работал в автономном режиме.
  3. Вы обновляете index.html, чтобы он регистрировал ваши новые и блестящиеsw-v2.js.

Если вы выполните вышеизложенное, пользователь никогда не получит sw-v2.js, потому что sw-v1.js обслуживает старую версию index.html из своего кэша.Вы поставили себя в положение, когда вам нужно обновить своего сервисного работника, чтобы обновить своего сервисного работника.

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

Workbox является одним из таких инструментов, и есть другие, такие как sw-precache (предшественник Workbox) и offline-plugin.

...