当我按下Enter键时,如何停止Chrome发送Cache-control:max-age = 0?


27

我的连接有点不稳定,我正在尝试使用本地代理来改善浏览体验。但是,根据我的研究,如果我在浏览器中单击现有URL上的“输入”,它将向Cache-Control: max-age=0代理发送标头,代理随后将往返服务器以重新验证内容。

我不是特别想要这个。如果对象是陈旧的,则高速缓存将重新获取它,但是如果它不是陈旧的,我不明白为什么我希望对象每次都重新验证一次。如果我怀疑页面较旧,则可以使用shift-F5,并且不怕使用它。

因此,Chrome幕后的某个地方是否有一个可调参数可以关闭这种令人讨厌的行为?

Answers:


25

我发现,如果您通过后退按钮或链接浏览页面,Chrome不会发送max-age = 0标头,并且通常(如果另一端的apache服务器配置为缓存)页面的缓存版本。

但是,当您直接在地址栏中输入URL(例如www.example.com/abcd/index.html),然后按时Return,Chrome会始终发送Cache-Control: max-age=0标头,从而避免了缓存。


5

可以使用用户脚本(ala油猴)或扩展名来修改Chrome发送至网络服务器的标头。这是一个应该起作用的扩展:ModHeader

根据介绍和屏幕截图,添加标题(例如)cache-control max-age=1000应该相对简单。它还支持域白名单,以防止将标头发送到特定网站。您可能需要在chrome:// flags中启用某些实验才能进行此工作。

添加标题演示


1

浏览器的行为基于收到的响应标头。如果浏览器收到响应标头,例如

Cache-Control: private
Expires: Thu, 01 Jan 1970 00:00:00 UTC

然后,浏览器将始终要求Cache-Control: max-age=0。这通常发生在Tomcat容器中,BaseAuthenticator当变量disableProxyCaching为true 时,在其中添加这些响应标头。如果您遇到类似的问题,则可以访问此链接以寻求解决方案。

希望这在一定程度上有所帮助:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.