【发布时间】:2015-05-18 11:33:40
【问题描述】:
我正在使用 Chrome 40(非常漂亮和现代)。
Cache-Control: max-age=0, no-cache 已在所有页面上设置 - 因此我希望浏览器仅在首先与服务器检查并获得 304 Not Modified 响应时才使用其缓存中的某些内容。
但是,在按下后退按钮时,浏览器会愉快地访问自己的缓存,而不需要与服务器进行检查。
如果我在新选项卡中打开与返回按钮相同的页面,那么它会检查服务器(并在事情发生变化时收到303 See Other 响应)。
请参阅下面的屏幕截图,显示 Chrome 开发者工具的“网络”选项卡中两种不同情况的输出。
我想我可以使用max-age=0, no-cache 作为no-store 的更轻量级的替代品,我不希望用户通过后退按钮看到陈旧的数据(但数据是无价值的,因此可以缓存)。
我对@987654330@(参见here 和here SO)的理解是,浏览器必须始终重新验证所有响应。那么为什么 Chrome 在使用返回按钮时不这样做呢?
no-store 是唯一的选择吗?
200 按下返回按钮时的响应(来自缓存):
303 在新标签页中请求同一页面时的响应:
【问题讨论】:
标签: google-chrome http-headers browser-cache