这些差异缓存控制参数之间的区别是什么?

时间:2011-08-27 10:20:52

标签: caching browser

cache-control:no-cache;
cache-control:max-age:0;
cache-control:no-store;

它们与浏览器不同。什么应该被视为标准?

1 个答案:

答案 0 :(得分:5)

否缓存

如果no-cache指令没有指定字段名,那么高速缓存绝不能使用响应来满足后续请求,而不能与源服务器成功重新验证。这允许源服务器甚至通过已配置为返回对客户端请求的陈旧响应的缓存来防止缓存。

如果no-cache指令确实指定了一个或多个字段名,则缓存可以使用响应来满足后续请求,但受缓存的任何其他限制。但是,在未成功重新验证原始服务器的情况下,不得在对后续请求的响应中发送指定的字段名称。这允许源服务器阻止在响应中重用某些头字段,同时仍允许缓存响应的其余部分。

<强>最大年龄

表示客户端愿意接受年龄不大于指定时间(秒)的响应。除非还包括最大指令,否则客户不愿意接受陈旧的响应。

否店内

no-store指令的目的是防止无意释放或保留敏感信息(例如,在备份磁带上)。 no-store指令适用于整个消息,可以在响应中或在请求中发送。如果在请求中发送,则缓存不得存储此请求的任何部分或对其的任何响应。如果在响应中发送,则缓存不得存储此响应的任何部分或引发它的请求。该指令适用于非共享和共享缓存。在此上下文中“绝不能存储”意味着缓存不得故意将信息存储在非易失性存储中,并且必须尽力尝试在转发后尽快从易失性存储中删除信息。

即使该指令与响应相关联,用户也可以在缓存系统之外明确地存储这样的响应(例如,使用“另存为”对话框)。历史缓冲区可以将这些响应存储为其正常操作的一部分。

该指令的目的是满足某些用户和服务作者的声明要求,这些用户和服务作者担心通过对缓存数据结构的意外访问而意外释放信息。虽然在某些情况下使用此指令可能会改善隐私,但我们提醒说,它绝不是确保隐私的可靠或充分机制。特别是,恶意或受损的缓存可能无法识别或遵守此指令,并且通信网络可能容易被窃听。

更多信息@ http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.2