页面在网络可用时打开,随后在离线时丢失样式和图片。HTML 只是阅读会话所需对象中的一项。

前向缓存会保留经过它的合格响应。它不会发现未来的每个链接,不会抓取仅在 HTML 中被提及的资源,也不会重建在源站运行的应用程序。

准备阅读集合

列出读者需要的文档、其图片、样式表和其他依赖关系。然后区分三种情况:

响应状态离线后果
已存储且可复用缓存有可能满足该请求
已存储但需要验证缺失的源站可能阻碍复用
从未存储或不在缓存中没有可提供的响应字节

断网前打开一个页面,并不能证明每个依赖项都进入了这个共享缓存。浏览器可能从自己的本地缓存中提供了部分资源。

拔掉网线后新鲜度依然存在

离线运行需要针对过期内容制定明确的策略。only-if-cached 请求是向协作缓存索取已存储响应的另一种方式。HTTP 对何时可以使用过期响应有限制,包括适用的重新验证要求。已保存的对象并不等于可以无条件无限期地提供它。

Squid 7 的 offline_mode 是一项特定的部署选项,它会停止常规的验证尝试。它改变的是验证行为;它无法凭空制造缺失的对象,也无法重建实时的登录流程。该指令在 Squid 8 中不可用。

普通 HTTPS CONNECT 也会把页面内容留在 TLS 之内。隧道代理无法从这些加密字节中获得可复用的 HTML 和图片对象。

对于已定义的公开阅读集合,请规划并检查完整的工作集及其更新策略。对于任意交互式浏览,仅靠缓存无法保证用户下一步可能请求的内容拥有完整的离线副本。

相关文章