我读到有关附注头维基其中说:
“杂注:无缓存头字段是一个HTTP / 1.0头用于在请求使用它是浏览器告诉服务器,它希望该资源的新版本,而不是服务器的任何中间高速缓存的手段告诉浏览器不缓存资源。一些用户代理千万要注意这个头的响应,但HTTP / 1.1 RFC明确警告说,不要依赖这种行为。”
但我还没有明白是怎么回事呢? 是什么之间的区别Cache-Control
头,它的值是no-cache
和Pragma
,其价值也no-cache
?
我读到有关附注头维基其中说:
“杂注:无缓存头字段是一个HTTP / 1.0头用于在请求使用它是浏览器告诉服务器,它希望该资源的新版本,而不是服务器的任何中间高速缓存的手段告诉浏览器不缓存资源。一些用户代理千万要注意这个头的响应,但HTTP / 1.1 RFC明确警告说,不要依赖这种行为。”
但我还没有明白是怎么回事呢? 是什么之间的区别Cache-Control
头,它的值是no-cache
和Pragma
,其价值也no-cache
?
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定义场景如下:
HTTP / 1.1缓存应该把“杂注:无缓存”,就好像客户端发送了“缓存控制:无缓存”。 没有新的Pragma指令将在HTTP定义。
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
是由服务器支持; Cache-Control
如果你正在写一个服务器:
Cache-Control
; 如果没有找到,检查Pragma: no-cache
,并执行Cache-Control: no-cache
逻辑; Cache-Control
。 当然,现实中可能是从什么书面或暗示的RFC不同!
| Stop using | Replace with |
| (HTTP 1.0) | (HTTP 1.1 - 1999) |
|---------------------|----------------------------------|
| Expires: [date] | Cache-Control: max-age=[seconds] |
| Pragma: no-cache | Cache-Control: nocache |
如果是1999年以后,而你还在使用过期或附注 ,你就错了。
我看着你的StackOverflow:
200 OK Pragma: no-cache Content-Type: application/json X-Frame-Options: SAMEORIGIN X-Request-Guid: a3433194-4a03-4206-91ea-6a40f9bfd824 Strict-Transport-Security: max-age=15552000 Content-Length: 54 Accept-Ranges: bytes Date: Tue, 03 Apr 2018 19:03:12 GMT Via: 1.1 varnish Connection: keep-alive X-Served-By: cache-yyz8333-YYZ X-Cache: MISS X-Cache-Hits: 0 X-Timer: S1522782193.766958,VS0,VE30 Vary: Fastly-SSL X-DNS-Prefetch-Control: off Cache-Control: private
TL; DR: Pragma
是HTTP / 1.0的遗留和自Internet浏览器5,或Netscape 4.7尚未需要。