我最近开始使用JQuery AJAX调用来获取文档就绪函数中的一些内容。我在AJAX调用中设置缓存控制的标题,当页面强制重新加载(Chrome)时,它会被覆盖,这正是我想要的。
不幸的是,稍后在页面和内容完全实现后通过用户交互调用AJAX时,请不要遵循这些缓存规则。
例如,如果我控制重新加载最初在初始化期间访问/ dostuff /的页面,并且缓存控制标头设置为极高的最大年龄时间,则浏览器会覆盖缓存控制标头并将最大年龄设置为0,这很好..它给了 用户可以通过很多控制来刷新内容。
这是正确的吗?我是否应该始终期望作为初始化一部分的AJAX调用以我开始期望的方式覆盖请求标头。似乎存在很多不一致的余地。
如果我稍后调用相同的URL就会执行我想要的操作,并且浏览器会自动添加一个if-modified-since标头,以帮助我从服务器正确返回。
如果我调用的URL不是初始化的一部分,那么就像/ dootherstuff / ..如果通过强制重新加载初始化页面,它不会将max age设置为0.
我不希望能够解决这个问题,因为它似乎应该正常工作..但是我想知道如何可靠地检测页面是否被强制重新加载以便我可以处理缓存正确控制标题。
使用捏造来处理重新加载而不是实际内容版本的URL上的版本密钥来解决此问题,会给我带来很多麻烦,额外的网络流量和处理时间。