Вопрос
Можно ли предварительно кэшировать файл с помощью другой стратегии? т.е. Устаревший при повторной проверке?
Или мне просто загрузить скрипт в DOM, а затем добавить для него маршрут в worker с правильной стратегией?
Фон
Это довольно странный случай, поэтому я постараюсь объяснить его как можно лучше ...
- У нас есть два репо; PWA и Игры
- Оба статически размещены в одном CDN.
- Из-за того, что репозиторий Games является отдельным, PWA не имеет доступа к управлению версиями пакетов js игры.
- Поэтому решение, которое я придумал, - это создать неверсированный манифест (
game-manifest.js
) в сборке Games. - Затем PWA предварительно кэширует этот файл, просматривает его содержимое и добавляет каждую запись в существующий манифест предварительного кеширования.
- Однако, учитывая, что
game-manifest.js
не имеет изменений и не хешируется, нам необходимо применить стратегию Сначала сеть или Устаревший при повторной проверке, чтобы файл обновлялся при становятся доступны новые версии
См. Следующий код как более ясный пример того, что я пытаюсь сделать:
import { precacheAndRoute } from 'workbox-precaching';
// Load the game manifest
// THIS FILE NEEDS TO BE PRECACHED, but under the strategy
// of stale while revalidate, or network first.
importScripts('example.cdn.com/games/js/game-manifest.js');
// Something like...
self.__gameManifest.forEach(entry => {
self.__precacheManifest.push({
url: entry
});
});
// Load the assets to be precached
precacheAndRoute(self.__precacheManifest);