什么是Pragma标头?缓存页面..和IE

Par*_*ris 28 php caching http-headers

所以我在php中发送一个标题来缓存我的页面(这也集成到我们的"CDN"(contendo/akamai)中).我总是使用这个pragma:缓存头,我已经看过各种例子也使用它; 但是,我只是检查了fiddler来测试我们开发的这个.net应用程序的流量,它说:

Legacy Pragma Header is present: cache
!! Warning IE supports only an EXACT match of "Pragma: no-cache". IE will ignore the Pragma header if any other values are present.
...
Run Code Online (Sandbox Code Playgroud)

我想那没关系.其余的反应似乎很好,我的规格.这是我的代码:

function headers_for_page_cache($cache_length=600){
    $cache_expire_date = gmdate("D, d M Y H:i:s", time() + $cache_length);
    header("Expires: $cache_expire_date");
    header("Pragma: cache");
    header("Cache-Control: max-age=$cache_length");
    header("User-Cache-Control: max-age=$cache_length");
}
Run Code Online (Sandbox Code Playgroud)

问题是这件事吗?pragma标题甚至做了什么?我需要它吗?我检查了HTTP标头规范文档,它说它是特定于实现的,并且唯一强制执行的Pragma是"Pragma:no-cache".

这是在特定时间内缓存的标头的最佳选择吗?

rai*_*ace 39

以非常简化的形式,Pragma:no-cache or Pragma:cache现在是"几乎"过时的方式将缓存指令传递给客户端实现,特别是浏览器和代理.客户端实现响应Pragma头的方式各不相同,这就是规范说它是特定于实现的原因.

更现代的方式Cache-control是您可以安全依赖的方式,因为几乎所有客户端实现都严格遵循它.

此外,如果您同时拥有两个Cache-controlPragma为同一指令设置,例如缓存,则Cache-control优先.

这是一篇关于缓存相关内容的优秀文章,我认为它是一个非常有趣和有用的读物​​:http://www.mnot.net/cache_docs/