W3.org协议说
默认情况下,如果请求方法、请求头字段和响应状态的要求表明它是可缓存的,则响应是可缓存的
当他们说“响应”时,这是否意味着一切都在缓存?所以当我使用 Cache-Control: no-cache 会阻止页面缓存吗?这对未来有什么不良影响吗?
通常,当旧的(甚至几秒钟的旧!)页面可能过时时,您会希望阻止缓存。您期望页面内容相关的时间越长,缓存效果就越好(并且阻碍的越少)。相反,信息的保质期越短,缓存实际上就越有可能阻碍人们获取最新的内容。
当然,禁止缓存的代价是你没有得到缓存的好处。对页面的每次点击都会向您的服务器生成一个请求,即使您只是一直在提供同一个页面。这可能意味着服务器负载的显着增加,而大型站点(或 rinky-dink Web 服务器)会发现这是不可取的。因此,为了回答“缓存还是不缓存?”这个问题,您需要平衡您的带宽和服务器功能(以及您可能最大化它们的意愿)与您拥有绝对最新位的要求。如果你没有这样的要求,那么no-cache
可能是矫枉过正。
至于未来的影响?唯一真正的问题是,在所有缓存副本到期之前,缓存仍在某种程度上进行。一旦发生这种情况,就没有真正的问题。您不会被阻止稍后重新启用缓存。事实上,如果您确实重新启用它,代理会很快看到更改,并在下次有人请求时再次开始缓存页面。
当他们说“响应”时,这是否意味着一切都在缓存?
请参阅 Paul D. Waite 的评论。
所以当我使用 Cache-Control: no-cache 会阻止页面缓存吗?
不,不会的。
- no-cache — 强制缓存每次在释放缓存副本之前向源服务器提交请求以进行验证。这对于确保尊重身份验证(与 public 结合)或保持严格的新鲜度而不牺牲缓存的所有好处很有用。
如果您根本不想缓存资源,请使用“no-store”。(同上)
- no-store — 指示缓存在任何情况下都不要保留表示的副本。