允许反向代理缓存但不允许浏览器缓存

时间:2016-02-15 18:13:50

标签: http caching proxy

有很多问题要求"如何确保页面没有被缓存"和答案如"这是如何指示客户端和代理服务器不缓存" 。我正在寻找一种方法来实现"允许代理缓存而不是客户端(即浏览器)缓存"。

事实上,我发现设置没有与缓存相关的标题可以实现这一点,但我不确定这是否是正确的方法,而且没有明确的方法来指导它。 / p>

1 个答案:

答案 0 :(得分:4)

在HTTP术语中,这些缓存称为sharedpublic(代理)和private缓存(浏览器)。 您应该使用类似于此的响应标头:

cache-control: public, max-age=0, s-maxage=${seconds}

${seconds}作为缓存元素的TTL。这里的关键是使用指令s-maxage

  

如果响应包含s-maxage指令,则对于共享缓存(但不包括私有缓存),此指令指定的最大年龄将覆盖max-age指令或Expires头指定的最大年龄。 s-maxage指令还暗示了proxy-revalidate指令的语义(请参阅第14.9.4节),即共享缓存在变为陈旧以响应后续请求之后不得使用该条目,而不首先使用该条目重新验证它。原始服务器。私有缓存总是忽略s-maxage指令。

请注意,此标头不会免除浏览器缓存资源(使用它来提供将来的请求),而是强制它重新验证其内容(如果还返回了最后修改或etag标头)