网络中断时从代理缓存阅读
准备离线阅读所需的可复用响应的实际集合,包括依赖关系和新鲜度行为。
页面在网络可用时打开,随后在离线时丢失样式和图片。HTML 只是阅读会话所需对象中的一项。
前向缓存会保留经过它的合格响应。它不会发现未来的每个链接,不会抓取仅在 HTML 中被提及的资源,也不会重建在源站运行的应用程序。
准备阅读集合
列出读者需要的文档、其图片、样式表和其他依赖关系。然后区分三种情况:
| 响应状态 | 离线后果 |
|---|---|
| 已存储且可复用 | 缓存有可能满足该请求 |
| 已存储但需要验证 | 缺失的源站可能阻碍复用 |
| 从未存储或不在缓存中 | 没有可提供的响应字节 |
断网前打开一个页面,并不能证明每个依赖项都进入了这个共享缓存。浏览器可能从自己的本地缓存中提供了部分资源。
拔掉网线后新鲜度依然存在
离线运行需要针对过期内容制定明确的策略。only-if-cached 请求是向协作缓存索取已存储响应的另一种方式。HTTP 对何时可以使用过期响应有限制,包括适用的重新验证要求。已保存的对象并不等于可以无条件无限期地提供它。
Squid 7 的 offline_mode 是一项特定的部署选项,它会停止常规的验证尝试。它改变的是验证行为;它无法凭空制造缺失的对象,也无法重建实时的登录流程。该指令在 Squid 8 中不可用。
普通 HTTPS CONNECT 也会把页面内容留在 TLS 之内。隧道代理无法从这些加密字节中获得可复用的 HTML 和图片对象。
对于已定义的公开阅读集合,请规划并检查完整的工作集及其更新策略。对于任意交互式浏览,仅靠缓存无法保证用户下一步可能请求的内容拥有完整的离线副本。