Pragma和Cache-control标题之间的区别?
我读了关于维基百科上的Pragma标题:
“Pragma:no-cache header字段是一个HTTP / 1.0头,用于请求中,这是浏览器告诉服务器和任何中间caching它想要一个新的资源版本,而不是服务器告诉浏览器不要caching资源,一些用户代理在响应中确实注意到了这个头,但是HTTP / 1.1 RFC特别警告不要依赖这种行为。
但我还没有明白它的作用? 其值为no-cache
的Cache-Control
头和值为no-cache
Pragma
之间有什么区别?
Pragma
是HTTP / 1.0实现,而cache-control
是同一个概念的HTTP / 1.1实现。 它们都是为了防止客户caching响应。 旧的客户端可能不支持HTTP / 1.1,这就是为什么这个头还在使用中。
除了Pragma
仅被定义为适用于客户端的请求外,没有区别,而Cache-Control
可以被客户端的请求和服务器的回复使用。
因此,就标准而言,只能从客户端请求和服务器接收客户请求的angular度进行比较。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32如下定义场景:;
HTTP / 1.1caching应该把“Pragma:no-cache”视为客户端发送了“Cache-Control:no-cache”。 HTTP中不会定义新的Pragma指令。
Note: because the meaning of "Pragma: no-cache as a response header field is not actually specified, it does not provide a reliable replacement for "Cache-Control: no-cache" in a response
我会阅读以上的方式:
-
如果你正在写一个客户端,并且需要
no-cache
:- 只需在请求中使用
Pragma: no-cache
,因为您可能不知道服务器是否支持Cache-Control
; - 但在回复中,要决定是否caching,请检查
Cache-Control
- 只需在请求中使用
-
如果你正在写一个服务器:
- 在parsing来自客户端的请求时,检查
Cache-Control
; 如果没有find,检查Pragma: no-cache
,然后执行Cache-Control: no-cache
逻辑; - 在回复中,提供
Cache-Control
。
- 在parsing来自客户端的请求时,检查
当然,现实可能不同于RFC中所写或暗示的内容!