从窗口中访问缓存
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
对于我们在 window
之外所做的所有工作,您可能会认为 Cache
实例 只能在 Service Worker 范围内访问。事实上,您可以在 Service Worker 作用域和 (在 window
的 Web 应用的传统代码中)中访问 Cache
实例。这可让用户更轻松地与 Service Worker 缓存直接交互,或根据缓存状态更新界面。
一种可能的使用情形是,为用户可能想稍后阅读但知道当时可能处于离线状态的网页提供“保存以供离线使用”功能。下面的 Glitch 嵌入视频展示了如何使用 Workbox 执行此操作。
在上面的嵌入内容中,您可以看到,点击“保存以供离线使用”按钮时,app.js
脚本会从 window
上下文写入离线缓存。在 Service Worker 中,页面的静态资源会被预缓存,以供离线访问。NetworkOnly
策略 与管理缓存网页的离线访问的特殊处理程序搭配使用,并传递到 NavigationRoute
。
如需测试 Glitch 嵌入的功能,请执行以下操作:
打开新的浏览器窗口并转到 https://save-for-offline-test.glitch.me/
点击添加到离线阅读清单 按钮。
在 Firefox 或 Chrome 中打开浏览器的开发者工具。如果您使用的是 Chrome,请前往应用面板。在 Firefox 中,转至存储面板。
在任一浏览器的开发者工具中,您都会在左侧窗格中看到缓存存储空间 项。点击即可将其展开。在 offline-cache 条目中,您应该会在右侧窗格中看到刚刚添加的网页网址。
点击页面底部的其他任何网页链接。
在任一浏览器中切换离线模式即可模拟离线连接。
点击您已添加到离线缓存的网页的链接。即使您处于离线状态,该文件也应该会显示。
点击您未添加到离线缓存的网页链接。请求将失败。
注意 :本文档之前已对此进行说明,但在以下上下文中,需要再次强调:注意存储配额 。当用户直接控制缓存中的内容时,您可能需要在 Service Worker 缓存中强制实施存在时间上限或条目数的上限。
这不是在 window
中使用 Cache
实例的唯一用例。例如,您可以预测性地预提取并缓存您知道用户需要执行特定操作的资源。这样可以减少或避免按需下载这些资源的延迟时间。
还有其他一些潜在的有益用例,而且,由于您可以在没有 Service Worker 的情况下与 Cache
实例进行交互,因此并非所有 Service Worker 都需要安装一个。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。有关详情,请参阅 Google 开发者网站政策 。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2021-12-07。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2021-12-07\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2021-12-07。"],[],[]]