http Pragma的有效值是多少?

时间:2011-09-10 22:23:45

标签: apache http-headers header

http header pragma的有效值是多少。我知道no-cache是一个,但我想启用缓存,所以我应该设置它。我做了一些googleing,我得到的只是大多数客户忽略了这一点,但没有关于它接受的其他值的信息。

3 个答案:

答案 0 :(得分:11)

令人惊讶的是,默认情况下只定义了一个参数,即no-cache,并且不会根据RFC在HTTP中定义新的Pragma指令。

参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32

此外,您需要使用 Cache-Control 标头来管理缓存行为,而不是仅仅为了支持旧版HTTP / 1.0而仍然包含的Pragma指令。

参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

奖金:http://www.mnot.net/cache_docs/

答案 1 :(得分:3)

您可能正在寻找Cache-Control,这在HTTP / 1.1中受支持,并且定义的状态多于Pragma

答案 2 :(得分:1)

更多信息,可能会帮助一些对缓存不太感兴趣的人,并且对http标头更感兴趣。即对原始问题的字面解释,“http头部编译指示的有效值是什么”?

接受的答案(https://stackoverflow.com/a/7376516/3246928)中的引用是RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32。它将snytax定义为:

  

Pragma =“Pragma”“:”1#pragma-directive

     

pragma-directive =“no-cache”|伸展附注

     

extension-pragma = token [“=”(token | quoted-string)]

暗示任何'token = value'对都是可接受的(值是可选的)。规范继续说

  

不会在HTTP中定义新的Pragma指令。

我会猜测这也意味着涵盖“扩展 - 编译指示”部分,但我希望它们在这里更加明确。

此标头 not 似乎是专门为缓存而创建的; RFC中的描述说:

  

Pragma general-header字段用于包括实现 -   特定指令可能适用于沿途的任何收件人   请求/响应链

所以,理论上,你可以在这里添加东西,它们可以工作。然而,尽管进行了大量搜索,但我还没有找到任何有关此处使用的任何其他值的参考。它实际上是http / 1的一个死而尴尬的部分。

看起来正常的事情是: