javascript - HTTP:如果文档被缓存,那我怎么不能通过会话历史访问它?
问题描述
缓存用于使访问的文档可用于后退/前进导航、保存、作为源查看等,而无需额外访问服务器。它还改进了缓存内容的离线浏览。
但是,我注意到 Google Chrome 中的异常行为,如果我离线,我经常(但不总是)无法通过浏览器的后退按钮访问页面。
这很奇怪,因为默认情况下浏览器应该缓存他们遇到的所有文档,如RFC 7234所示:
尽管缓存是 HTTP 的一个完全可选的特性,但可以假设重用缓存的响应是可取的,并且当没有要求或本地配置阻止它时,这种重用是默认行为。
任何人都知道为什么会发生这种不规则行为,以及浏览器私有缓存的默认到期时间是多长时间?
编辑
我知道RFC 7234的以下部分,但不幸的是它没有回答这个问题。文字仍然含糊不清:
由于原始服务器并不总是提供明确的过期时间,缓存可以在未指定明确时间时分配启发式过期时间,采用使用其他头字段值(例如 Last-Modified 时间)的算法......如果响应具有 Last-Modified 头字段([RFC7232] 的第 2.2 节),鼓励缓存使用启发式过期值,该值不超过自该时间以来间隔的一部分。该分数的典型设置可能是 10%。
顺便说一句,典型的网页响应是否Last Modified
默认有一个标题字段?
解决方案
推荐阅读
- regex - 正则表达式:捕获域 example.com 的任何 URL
- angularjs - Angularjs 多语言支持使用量角器
- android - 如何使用 android studio 获取应用程序的 http 请求?
- ruby-on-rails - 它和Rspec中描述有什么区别
- go - golang调用cmd时调用cmd的返回值
- java - 打印 ArrayList 多重值时,它仅显示 -> '[]'
- android - 为什么我的结果没有显示
- reactjs - 如何在反应js中使用动态键设置状态数组
- database - MongoDb groupby 计数查询
- android - Android UI 横向拉伸