我的情况
我正在使用Cache Busting,当我包含这样的CSS文件时:
echo "<link href='stylesheet.css?" . filemtime('stylesheet.css') . "' />"
我的目标是
现在我想对我在CSS文件中包含的图像做类似的事情。
问题
问题是我不能在我的CSS文件中使用PHP,我宁愿保持我的CSS文件分离。
我的问题
如何在保存文件分隔的同时将filemtime()
添加到CSS文件中的图像中?
修改
我想使用Far Future Expires标头来缓存文件。
答案 0 :(得分:3)
您实际上可以将css文件重命名为style.css.php,然后在其中使用PHP。只要后处理结果采用适当的CSS格式,它就应该有效。我过去做过。我不确定是否有必要,但如果这给你带来问题,你可以使用标题('Content-type ...')这样的东西,并确保它作为CSS文件发送。
答案 1 :(得分:2)
要实现缓存清除,最好的方法是发送正确的标头。确保Apache配置为发送Expires: now
标头。所以在.htaccss文件中:
Header always set Cache-Control "no-store, no-cache, must-revalidate"
Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT"
这将始终强制对其目录中的所有内容进行无缓存。
但是,如果你想要有条件地缓存,我建议的是做一些事情。
在CSS文件的名称中包含版本号。所以你的文件看起来像mycss.1.css
,mycss.2.css
。由于您需要协调两个文件名,因此需要更多工作。但是它更好,因为你没有发送带有PHP的文件(没有资源命中),你可以使用CDN(甚至更好),你仍然可以利用远期的过期标题。
设置Cache-Control: must-revalidate
标头和正确的E-Tag标头,以便在内容未发生变化时,只需发送304 Not Modified
标头即可... < / p>