所以我在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. ...
我想这没关系。其余的反应似乎很好,我的规格。这是我的代码:
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");
}
问题是这件事吗? pragma标题甚至做了什么?我需要它吗?我检查了HTTP标头规范文档,它说它是特定于实现的,并且唯一强制执行的Pragma是“Pragma:no-cache”。
这是在特定时间内缓存标头的最佳选择吗?
答案 0 :(得分:39)
以非常简化的形式,Pragma:no-cache or Pragma:cache
现在是“几乎”过时的方式将缓存指令传递给客户端实现,特别是浏览器和代理。客户端实现响应Pragma头的方式各不相同,这就是规范说它是特定于实现的原因。
更为现代的Cache-control
方式是您可以安全依赖的方式,因为几乎所有客户端实现都严格遵循它。
此外,如果您为同一条指令设置Cache-control
和Pragma
,例如缓存,则Cache-control
优先。
这是一篇关于缓存相关内容的优秀文章,我认为这是一篇非常有趣且有用的内容:http://www.mnot.net/cache_docs/