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

use*_*212 4 html firebug tomcat caching http

这是一个 html 元标记示例:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="private">
Run Code Online (Sandbox Code Playgroud)

它设置在 html 元标记上以启用缓存。

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

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

Cache-Control: private
Run Code Online (Sandbox Code Playgroud)

所以我想知道:信息是什么时候写在http响应中的?

有两种设置相同信息的方式(元标记和http响应行)有什么需要?

Alo*_*hci 5

来自HTML 4.01 规范

META 元素

http-equiv = 名称 [CI]

这个属性可以用来代替 name 属性。HTTP 服务器使用此属性来收集 HTTP 响应消息头的信息。

这就是想法。服务器的工作是在元元素通过网络发送之前将元元素转换为真正的 HTTP 标头。

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

浏览器尽其所能地选择了这些部分,但是缓存规则也适用于代理,并且这些规则只会处理真正的 HTTP 标头,因此缓存控制 http-equiv 元元素在 HTML5 中无效。

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