什么是杂注头文件?缓存页面..和 IE

2022-08-30 15:17:16

所以我在php中发送一个标头来缓存我的页面(这也集成到我们的“CDN”(contendo / akamai)中)。我总是使用这个编译指示:缓存标头,我也看到各种示例使用它;但是,我刚刚检查了小提琴手来测试我们开发的这个.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");
}

问题是这重要吗?杂注标题甚至有什么作用?我需要它吗?我检查了HTTP标头规范文档,它说它是特定于实现的,唯一强制执行的Pragma是“Pragma:no-cache”。

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


答案 1

在一个非常简化的形式中,现在“几乎”过时了将缓存指令传递给客户端实现的方式,特别是浏览器和代理。客户端实现响应 Pragma 标头的方式各不相同,这就是为什么规范说它是特定于实现的。Pragma:no-cache or Pragma:cache

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

此外,如果您同时拥有两者并设置了相同的指令,则说缓存,则优先。Cache-controlPragmaCache-control

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


答案 2

推荐