2

W3.org协议

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

当他们说“响应”时,这是否意味着一切都在缓存?所以当我使用 Cache-Control: no-cache 会阻止页面缓存吗?这对未来有什么不良影响吗?

4

2 回答 2

2

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

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

至于未来的影响?唯一真正的问题是,在所有缓存副本到期之前,缓存仍在某种程度上进行。一旦发生这种情况,就没有真正的问题。您不会被阻止稍后重新启用缓存。事实上,如果您确实重新启用它,代理会很快看到更改,并在下次有人请求时再次开始缓存页面。

于 2012-12-13T17:01:18.943 回答
0

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

请参阅 Paul D. Waite 的评论。

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

不,不会的。

来自Mark Notingham 的缓存教程

  • no-cache — 强制缓存每次在释放缓存副本之前向源服务器提交请求以进行验证。这对于确保尊重身份验证(与 public 结合)或保持严格的新鲜度而不牺牲缓存的所有好处很有用。

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

  • no-store — 指示缓存在任何情况下都不要保留表示的副本。
于 2012-12-13T17:51:59.087 回答