语用和Cache-Control头之间的区别是什么?语用和Cache-Control头之间的区别是什

2019-05-13 15:25发布

我读到有关附注头维基其中说:

“杂注:无缓存头字段是一个HTTP / 1.0头用于在请求使用它是浏览器告诉服务器,它希望该资源的新版本,而不是服务器的任何中间高速缓存的手段告诉浏览器不缓存资源。一些用户代理千万要注意这个头的响应,但HTTP / 1.1 RFC明确警告说,不要依赖这种行为。”

但我还没有明白是怎么回事呢? 是什么之间的区别Cache-Control头,它的值是no-cachePragma ,其价值也no-cache

Answer 1:

Pragma是HTTP / 1.0实施和cache-control是HTTP / 1.1实施相同的概念的。 他们俩是为了防止客户端缓存的响应。 旧版客户端可能不支持HTTP / 1.1这就是为什么头仍在使用。



Answer 2:

没有区别,不同之处在于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不同!



Answer 3:

| 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尚未需要。



文章来源: Difference between Pragma and Cache-control headers?