Par*_*ris 28 php caching http-headers
所以我在php中发送一个标题来缓存我的页面(这也集成到我们的"CDN"(contendo/akamai)中).我总是使用这个pragma:缓存头,我已经看过各种例子也使用它; 但是,我只是检查了fiddler来测试我们开发的这个.net应用程序的流量,它说:
Run Code Online (Sandbox Code Playgroud)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");
}
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-control
并Pragma
为同一指令设置,例如缓存,则Cache-control
优先.
这是一篇关于缓存相关内容的优秀文章,我认为它是一个非常有趣和有用的读物:http://www.mnot.net/cache_docs/