no-cache 并不意味着不缓存。 事实上,这意味着在对每个请求使用您可能拥有的任何缓存响应之前“使用服务器重新验证”。
另一方面,must-revalidate 只需要在资源被认为陈旧时重新验证。
如果服务器说资源仍然有效,那么缓存可以用它的表示进行响应,从而减轻服务器重新发送整个资源的需要。
no-store 实际上是完整的不缓存指令,旨在防止以任何形式的缓存存储表示。
no-store 指令的目的是防止无意中释放或保留敏感信息(例如,在备份磁带上)。 no-store 指令适用于整个消息,可以在响应或请求中发送。如果在请求中发送,则缓存不得存储此请求或对它的任何响应的任何部分。如果在响应中发送,则缓存不得存储此响应或引发它的请求的任何部分。该指令适用于非共享和共享缓存。 “不得存储”在此上下文中意味着缓存不得有意将信息存储在非易失性存储中,并且必须尽最大努力在转发信息后尽快从易失性存储中删除信息。即使此指令与响应相关联,用户也可能在缓存系统之外显式存储此类响应(例如,使用“另存为”对话框)。历史缓冲区可以存储这样的响应作为其正常操作的一部分。该指令的目的是满足某些用户和服务作者的既定要求,他们担心通过对缓存数据结构的意外访问而意外发布信息。虽然在某些情况下使用此指令可能会改善隐私,但我们警告说,它无论如何都不是确保隐私的可靠或充分机制。特别是,恶意或受损的缓存可能无法识别或遵守此指令,并且通信网络可能容易受到窃听。