meta标签,php标头和htaccess中哪一个是更好的缓存系统?

时间:2013-01-19 16:17:54

标签: php html .htaccess

用于缓存控制,mod重写和php标头标记的html元标记

<filesMatch ".(ico|gif|jpg|jpeg|png|flv|pdf)$">
  Header set Cache-Control "max-age=29030400"
</filesMatch>

<meta http-equiv="Cache-control" content="public">

header('Expires: Thu, 01-Jan-70 00:00:01 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

哪个缓存系统更好,为什么? php,htaccess或meta标签?

2 个答案:

答案 0 :(得分:3)

他们两个都没有。

只有你的第一个选项实际上会告诉浏览器缓存图像(尽管它与mod_rewrite无关)。

然而,无论如何,我都不会为max-age而烦恼。浏览器对于缓存图像已经足够好了,不需要手动强制它

答案 1 :(得分:0)

除了您的示例在每种情况下设置不同的标题和值之外,浏览器中的结果将与您使用的方法相同。主要区别在于每种文件可以适用的文件种类:

  • <meta>标记只能出现在HTML文档中;因此,您无法使用它来控制非HTML文件(例如图像)的缓存有效性,并且可能会在不处理HTML并发现标记的情况下下载文件。
  • PHP header()函数可以影响您使用PHP动态提供的任何文件。例如,这可能包括纯文本或XML文件,但可能不包括您完全上传到服务器的HTML文件。您可以通过PHP传递静态文件,包括图像,但这将是一种低效的服务方式。
  • Apache Header指令(不属于mod_rewrite)可以应用于Apache正在服务的任何文件,无论它是否是动态生成的。这可以包括图像,静态HTML,CSS和JS,以及您使用PHP生成的任何内容。

Apache指令的唯一缺点是,根据您的设置以及您使用Apache配置规则的经验,为不同的数据位维护更复杂的规则可能更为谨慎。因此,对于已经使用PHP处理的数据,如果您想要更精细的控制,可能需要使用header()函数构建一些内容。