为max-age = 0请求configurationnginx

我使用nginx作为proxy_cache反向代理。 后端是设置cache-control响应头,这使得nginx在可能的时候提供来自caching的响应。

不过,我希望允许客户端通过设置请求标头Cache-Control:max-age=0来绕过caching。 这样用户可以通过在浏览器中点击CTRL+R来获得新的副本。 默认情况下,nginx似乎忽略Cache-Control请求头。

如何configurationnginx从后端获取全新副本,并在客户端使用Cache-Control:max-age=0请求资源时更新caching?

你可以使用proxy_cache_bypass

 proxy_cache_bypass $http_cache_control; 

这将导致nginx在来自客户端的HTTP请求中存在Cache-Control头部的情况下获取文档的新副本。

请注意,从后端得到的响应仍然有资格进行caching。 如果您想取消caching的资格,请使用与proxy_no_cache指令相同的参数。

来源: http : //wiki.nginx.org/HttpProxyModule#proxy_cache_bypass


如果你特别想在客户端在头文件中使用Cache-Control: max-age=0时候只是绕过caching(比如明确地不支持另一个变种, Cache-Control: no-cache ,这实际上是一个更强的偏好一个比max-age=0的页面的新副本是),那么你可以使用以下,我不会推荐由于这样的限制:

 set $cc_ma 0; if ($http_cache_control = "max-age=0") { # honour ⌘R, ignore ⇧⌘R (yes, bad idea!) set $cc_ma 1; } proxy_cache_bypass $cc_ma; 

顺便说一下,还有Pragma: no-cache ,这显然不会解释,尽pipe在我有限的一组实验中,它总是伴随着一个Cache-Control: no-cache ,所以,原来的单行可能会做最好的工作。

需要注意的是,当您移动重新载入⇧⌘R时,SeaMonkey发送Cache-Control: max-age=0时,单击Reload⌘RPragma: no-cache\r\nCache-Control: no-cache