引用自http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
14.9.1 什么是可缓存的
默认情况下,如果请求方法、请求头字段和响应状态的要求表明它是可缓存的,则响应是可缓存的。第13.4节总结了这些缓存性的默认值。以下Cache-Control响应指令允许源服务器覆盖响应的默认缓存性:
public
表示响应可以被任何缓存缓存,即使它通常是不可缓存的或只能在非共享缓存中缓存。(有关详细信息,请参见授权,第14.8节。)
private
表示响应消息的全部或部分是针对单个用户的,不能由共享缓存缓存。这允许源服务器声明响应的指定部分仅适用于一个用户,并且对其他用户的请求不是有效响应。私有(非共享)缓存可以缓存响应。
注意:此处使用的“private”一词仅控制响应可能被缓存的位置,不能确保消息内容的隐私性。
no-cache
如果no-cache指令未指定字段名称,则缓存必须不使用响应来满足后续请求,而不经过与源服务器的成功重新验证。这允许源服务器甚至防止已配置为向客户端请求返回陈旧响应的缓存进行缓存。
如果no-cache指令指定一个或多个字段名称,则缓存可以使用响应来满足后续请求,但受到任何其他缓存限制的限制。但是,在不经过与源服务器的成功重新验证的情况下,不能将指定的字段名称发送到后续请求的响应中。这允许源服务器防止在响应中重复使用某些标头字段,同时仍允许缓存响应的其余部分。
注意:大多数HTTP/1.0缓存将不会识别或遵守此指令。
14.9.2 缓存可以存储什么
no-store
no-store指令的目的是防止敏感信息(例如备份磁带上的信息)的意外发布或保留。no-store指令适用于整个消息,并且可以在响应或请求中发送。
如果在请求中发送,则缓存不得存储该请求或对其进行任何响应。如果在响应中发送,则缓存不得存储该响应或引发它的请求。此指令适用于非共享和共享缓存。“不得存储”在此上下文中意味着缓存不得有意地将信息存储在非易失性存储器中,并且必须尽最大努力在转发信息后尽快从易失性存储器中删除信息。
即使将此指令与响应相关联,用户也可能明确地将此响应存储在缓存系统之外(例如,使用“另存为”对话框)。历史缓冲区可以将这些响应作为其正常操作的一部分存储。
此指令的目的是满足某些用户和服务作者的声明要求,他们担心通过意外访问缓存数据结构来发布信息。虽然在某些情况下使用此指令可能会提高隐私性,但我们警告它绝不是确保隐私的可靠或充分机制。特别是,恶意或被攻击的缓存可能无法识别或遵守此指令,并且通信网络可能容易受到窃听。