我在Wikipedia上读到了Pragma Headers ,其中说:
“Pragma:no-cache标头字段是用于请求的HTTP / 1.0标头 . 它是浏览器告诉服务器和任何中间缓存它需要新资源的一种手段,而不是用于服务器告诉浏览器不要缓存资源 . 一些用户代理确实在响应中注意这个头,但HTTP / 1.1 RFC特别警告不要依赖这种行为 . “
但我还不明白它的作用? Cache-Control
标头的值是 no-cache
和 Pragma
,其值也是 no-cache
有什么区别?
3 回答
Pragma
是HTTP / 1.0实现,cache-control
是相同概念的HTTP / 1.1实现 . 它们都旨在阻止客户端缓存响应 . 较旧的客户端可能不支持HTTP / 1.1,这就是该标头仍在使用的原因 .没有区别,除了
Pragma
仅定义为适用于客户端的请求,而Cache-Control
可以由客户端的请求和服务器的回复使用 .因此,就标准而言,它们只能从发出请求的客户端和服务器接收来自客户端的请求的角度进行比较 . http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32将场景定义如下:
我将如何阅读以上内容:
如果您正在编写客户端并且需要
no-cache
:只需在您的请求中使用
Pragma: no-cache
,因为您可能不知道服务器是否支持Cache-Control
;但在回复中,要决定是否缓存,请检查
Cache-Control
如果您正在编写服务器:
在解析来自客户端的请求时,检查
Cache-Control
;如果找不到,检查Pragma: no-cache
,并执行Cache-Control: no-cache
逻辑;在回复中,提供
Cache-Control
.当然,现实可能与RFC中的书面或暗示有所不同!
如果's after 1999, and you'仍然使用 Expires 或 Pragma ,那你做错了 .
我在看你Stackoverflow:
tl;博士:
Pragma
是HTTP / 1.0的遗产,自Internet Explorer 5或Netscape 4.7以来一直不需要 .