首页 > 解决方案 > HTTP:如果文档被缓存,那我怎么不能通过会话历史访问它?

问题描述

MDN 说

缓存用于使访问的文档可用于后退/前进导航、保存、作为源查看等,而无需额外访问服务器。它还改进了缓存内容的离线浏览。

但是,我注意到 Google Chrome 中的异常行为,如果我离线,我经常(但不总是)无法通过浏览器的后退按钮访问页面。

这很奇怪,因为默认情况下浏览器应该缓存他们遇到的所有文档,如RFC 7234所示:

尽管缓存是 HTTP 的一个完全可选的特性,但可以假设重用缓存的响应是可取的,并且当没有要求或本地配置阻止它时,这种重用是默认行为。

任何人都知道为什么会发生这种不规则行为,以及浏览器私有缓存的默认到期时间是多长时间?


编辑

我知道RFC 7234的以下部分,但不幸的是它没有回答这个问题。文字仍然含糊不清:

由于原始服务器并不总是提供明确的过期时间,缓存可以在未指定明确时间时分配启发式过期时间,采用使用其他头字段值(例如 Last-Modified 时间)的算法......如果响应具有 Last-Modified 头字段([RFC7232] 的第 2.2 节),鼓励缓存使用启发式过期值,该值不超过自该时间以来间隔的一部分。该分数的典型设置可能是 10%。

顺便说一句,典型的网页响应是否Last Modified默认有一个标题字段?

标签: javascripthttpcaching

解决方案


推荐阅读