问题
是否可以使用不同的策略预缓存文件?即在重新验证时过时?
或者,我应该只在 DOM 中加载脚本,然后使用正确的策略在 worker 中为其添加路由吗?
背景
这是一个非常奇怪的案例,所以我会尽力解释它......
- 我们有两个回购;PWA和游戏
- 两者都静态托管在同一个 CDN 上
- 由于 Games repo 是独立的,PWA 无法访问游戏 js 包的版本控制
- 因此,我想出的解决方案是
game-manifest.js
在 Games 构建中生成一个未版本化的清单 ( ) - 然后,PWA 将预缓存此文件,遍历其内容,并将每个条目附加到现有的预缓存清单
- 但是,鉴于
game-manifest.js
没有修订并且没有散列,我们需要应用Network First或Stale While Revalidate策略,以便在新版本可用时更新文件
请参阅以下代码作为我正在尝试做的更清晰的示例:
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);