什么时候应该使用Cache-Control:no-cache?

时间:2012-12-13 16:49:02

标签: html caching webpage

W3.org Protocol

  

默认情况下,如果请求的要求,则可以缓存响应   方法,请求标头字段和响应状态表明   它是可缓存的

当他们说“回复”时,这意味着一切都在缓存吗?所以当我使用Cache-Control时:no-cache会阻止页面缓存吗?那将来会产生什么不良影响吗?

2 个答案:

答案 0 :(得分:2)

通常,您可能希望在旧(甚至几秒钟!)页面可能过时时阻止缓存。您期望页面内容相关的时间越长,缓存越好(并且越少)。相反,信息的保质期越短,缓存实际上越有可能阻碍并阻止人们获取最新内容。

当然,禁止缓存的成本是您没有获得缓存的好处。每次点击页面都会向您的服务器生成一个请求,即使您只是一直提供相同的页面。这可能意味着服务器负载的显着增加,大型站点(或一个rinky-dink Web服务器)会发现不合需要的。因此,为了回答“缓存还是不缓存?”这一问题,您需要平衡带宽和服务器功能(以及您愿意最大化它们的意愿),以满足您拥有绝对最新位的要求。如果您没有这样的要求,那么no-cache可能会有点过分。

至于未来效果?唯一真正的问题是缓存仍然在某种程度上发生,直到所有缓存副本到期。一旦发生这种情况,就没有真正的问题。您无法在以后重新启用缓存。实际上,如果您确实重新启用它,代理会很快看到更改,并在下次有人请求时再次开始缓存页面。

答案 1 :(得分:0)

  

当他们说“回应”时,这意味着一切都在缓存吗?

见Paul D. Waite的评论。

  

所以当我使用Cache-Control时:no-cache会阻止页面缓存吗?

不,它不会。

来自Mark Notingham's Caching Tutorial

  
      
  • no-cache - 强制缓存每次在释放缓存副本之前将请求提交到源服务器进行验证。这有助于确保认证(与公众结合),或保持严格的新鲜度,而不会牺牲缓存的所有好处。
  •   

如果您根本不想为资源使用缓存,请使用“no-store”。 (同上)

  
      
  • no-store - 指示缓存在任何条件下都不保留该表示的副本。
  •