在http标头响应或html metatag中设置缓存控制有什么区别?

时间:2013-04-12 18:19:13

标签: html http tomcat caching firebug

这是一个html metatag示例:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="private">

在html metatag上设置以启用缓存。

我用Tomcat和Firebig尝试过。服务器在html metatag中发送信息。但是在http标头响应中没有关于缓存的信息。

然而,http标头响应中的类似内容是有效的:

Cache-Control: private

所以我想知道:当信息写在http响应中时?

需要两种方法来设置相同的信息(metatag和http响应行)?

1 个答案:

答案 0 :(得分:4)

来自the HTML 4.01 spec

  

META元素

     

http-equiv = name [CI]

     

可以使用此属性代替name属性。 HTTP服务器使用此属性收集HTTP响应的信息   邮件标题。

这就是主意。服务器的工作是将元元素转换为真正的HTTP头,之后通过网络发送它。

但这意味着服务器必须在发送之前解析每个HTML文档,因此实际上从未发生过。

浏览器尽可能地拾取这些碎片,但缓存规则也适用于代理,而这些只会处理真正的HTTP头,因此缓存控制http-equiv元素在HTML5中无效。

您应该始终使用真正的HTTP标头,这些标头由服务器作为其配置的一部分添加,或者在服务器端代码中添加(即,用PHP,Java servlet,ASP.NET等编写的代码)。