javascript - 如何使用 workbox-build generateSW 为缓存添加过期时间?
问题描述
我使用 workbox generateSW 方法来生成服务工作者,这是我使用的配置:
const workbox = require("workbox-build");
workbox.generateSW({
globDirectory: "./",
globIgnores: ["node_modules/**", "**/generator.js", "**/sw.js"],
globPatterns: ["**/*.{css,js}"],
swDest: "./sw.js",
sourcemap: false,
cleanupOutdatedCaches: true,
clientsClaim: true,
runtimeCaching: [
{
urlPattern: /\.(?:html|htm|xml)$/,
handler: "StaleWhileRevalidate",
options: {
cacheName: "runtimecaching name",
expiration: {
maxAgeSeconds: 1,
},
},
},
],
});
我在文档中找不到删除旧缓存的过期时间,那么如何在一段时间后使用 workbox-build generateSW 清理缓存?
解决方案
maxAgeSeconds
并不是要在一段时间后自动清理旧条目。从文档中:
该插件将在每次请求或缓存更新后检查并删除条目。
需要注意的一件事:
- 因为打开 IndexedDB 很慢,所以直到请求被使用后才会过期。这意味着过期的请求可能会被使用一次,但之后就会过期。
- 为了缓解这种情况,插件将检查缓存响应的“日期”标头,如果存在并且可以解析日期,它将基于此过期,因为它不需要 IndexedDB 查找。
maxAgeSeconds
在缓存请求过时之前控制时间的选项也是如此,并且旧条目删除是由请求触发的。
要在任何请求后检查并删除旧条目,请使用maxEntries
选项:
使用缓存响应或将新请求添加到缓存后,插件将查看配置的缓存并确保缓存条目的数量不超过限制。如果是这样,最旧的条目将被删除。
如果您仍然需要在任何请求后根据时间而不是条目数进行清理,则需要创建自己的插件ExpirationPlugin
并更好地使用注入清单模式。
推荐阅读
- c - 内存以高速率上升太快
- github - GitHub 怎么知道我的密码很弱?
- javascript - 在 Node.js 中将 HTTP2 中的多个 JSON 数据从客户端发送到服务器
- stripe-payments - 创建具有忠诚度/分层折扣的条带订阅
- excel - 第二次计算时出现错误 13,但第一次计算时没有
- azure-functions - 如何删除 Azure Functions v2 响应中的 Request-Context 标头
- java - 如何使用 JPA 以线程安全的方式保存或更新对象?
- stm32 - stm32 的 I2C 故障
- html - 如何在文章的引导列中使用 nth-child()
- python-3.x - 如何获取此字符串 Python3 的子字符串