【问题标题】:Cache images/js/css never HTML content缓存图像/js/css 从不缓存 HTML 内容
【发布时间】:2011-12-31 06:39:04
【问题描述】:

我正在寻找一种 PHP header() 方法来缓存图像,但从不缓存 php 输出的 html 内容。 现在,我在我的 .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 内容。

【问题讨论】:

    标签: php image caching header


    【解决方案1】:

    一个选项可能是从专用的 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 是否真的有必要,但我将它作为希望有帮助的提示包含在内。

    【讨论】:

    • 不,我说的是图像文件,而不是生成图像的 php 脚本文件。
    • 老实说,我不知道这是否能解决您的问题。我假设您正在谈论在 php 文件中包含 html 标记中的图像,而不是直接在浏览器中查看图像。
    • 我应该更清楚一点,我说的是这个:echo "&lt;img src=\"$img/myImage.png\" height=\"800\" width=\"300\"&gt;" ; 并希望浏览器缓存文件http://www.mysite.com/images/myImage.png。实际上,我在问题中所说的标题功能运行良好。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2011-10-04
    • 2010-12-13
    • 2017-02-27
    相关资源
    最近更新 更多