用于缓存控制,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标签?
答案 0 :(得分:3)
他们两个都没有。
只有你的第一个选项实际上会告诉浏览器缓存图像(尽管它与mod_rewrite无关)。
然而,无论如何,我都不会为max-age而烦恼。浏览器对于缓存图像已经足够好了,不需要手动强制它
答案 1 :(得分:0)
除了您的示例在每种情况下设置不同的标题和值之外,浏览器中的结果将与您使用的方法相同。主要区别在于每种文件可以适用的文件种类:
<meta>
标记只能出现在HTML文档中;因此,您无法使用它来控制非HTML文件(例如图像)的缓存有效性,并且可能会在不处理HTML并发现标记的情况下下载文件。header()
函数可以影响您使用PHP动态提供的任何文件。例如,这可能包括纯文本或XML文件,但可能不包括您完全上传到服务器的HTML文件。您可以通过PHP传递静态文件,包括图像,但这将是一种低效的服务方式。Header
指令(不属于mod_rewrite
)可以应用于Apache正在服务的任何文件,无论它是否是动态生成的。这可以包括图像,静态HTML,CSS和JS,以及您使用PHP生成的任何内容。 Apache指令的唯一缺点是,根据您的设置以及您使用Apache配置规则的经验,为不同的数据位维护更复杂的规则可能更为谨慎。因此,对于已经使用PHP处理的数据,如果您想要更精细的控制,可能需要使用header()
函数构建一些内容。