缓存images / js / css从不HTML内容

时间:2011-12-31 06:39:05

标签: php image caching header

我正在寻找一种PHP header()方式来缓存图像但从来没有html内容的php输出。 现在,我在.htaccess文件中使用这些行:

<filesMatch "\.(ico|gif|jpg|jpeg|png|flv|avi|mov|mp4|mpeg|mpg|mp3|pdf|doc|css|js|html|bmp|js|css)$">
  Header set Cache-Control "max-age=86400000"
</filesMatch>

我不做任何标题。

我更喜欢在我的php文件的顶部发送这样的标题,所以我尝试了这些:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0");
header("Pragma: no-cache");

但是使用这些标头功能,如果我关闭浏览器并返回到网站,则图像不会缓存在浏览器中。 我必须向浏览器发送什么以缓存图像但从不发送HTML内容?

修改 对不起,但我再次检查,我觉得这些标题功能足以使浏览器缓存图像,而不是html内容。

1 个答案:

答案 0 :(得分:0)

一个选项可能是从专用的php文件加载图像:

header('Content-Type: image/png');
header('Cache-control: private');
$img = imagecreatefrompng("example.png");
imagepng($img);
imagedestroy($img);

为每个保存一个单独的php文件,你可以在uri上传递文件名。例如,图像的路径将是image.php?filename = example.png,在PHP脚本中使用$ _GET ['filename']。

*我不确定Cache-control:private是否真的有必要,但我把它包含在希望有用的提示中。