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