使用过时进行预缓存,同时在工作框中重新验证策略



问题

是否可以使用不同的策略预缓存文件?即重新验证时过时

或者,我应该只在 DOM 中加载脚本,然后使用正确的策略在 worker 中为其添加路由吗?

背景

这是一个非常奇怪的案例,所以我会尽力解释它......

  • 我们有两个存储库;PWA运动会
  • 两者都静态托管在同一 CDN 上
  • 由于游戏存储库是独立的,PWA 无法访问游戏 js 包的版本控制
  • 因此,我想出的解决方案是在游戏构建中生成一个不受版本控制的清单(game-manifest.js
  • 然后,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);

一般来说,使用workbox-precaching时不可能交换替代策略。它始终是缓存优先的,预缓存清单中的版本控制信息控制更新的发生方式。

在 https://github.com/GoogleChrome/workbox/issues/1767 有一个关于这个问题的更大讨论

建议的操作过程是使用您喜欢的策略显式设置运行时缓存路由,并通过在install步骤中提前向其添加条目来"启动"缓存。

相关内容

  • 没有找到相关文章

最新更新