使用 PHP 缓存生成的图像

Posted

技术标签:

【中文标题】使用 PHP 缓存生成的图像【英文标题】:Caching generated images with PHP 【发布时间】:2010-06-14 15:27:19 【问题描述】:

我正在尝试缓存已生成的图像。您可以通过 resize.php?width=x&height=y 访问文件来创建图像。 如果该宽度和高度的图像不存在,我使用 imagemagick 来创建它。但是,如果它确实存在,它就会提供给访问者。

!file_exists($name) 检查工作正常,因此在不需要时不会进行处理。但是,图像仍然需要一段时间才能加载。

是我的 readfile 方法不正确还是我设置的标题不正确?

if (!file_exists($name)) 
 //image processing here

header("Content-Type: image/png");
header("Expires: Sat, 25 Jul 2020 10:00:00 GMT");
readfile($name);

谢谢。

【问题讨论】:

【参考方案1】:

如果我必须这样做,如果图像不存在,我会对其进行处理,并将其保存在某个 Web 可访问的文件夹中。如果文件存在,只需重定向到它 header('位置:http://www.yoursite.com/path/to/existing/file.png')

【讨论】:

啊哈,呵呵!谢谢您的帮助!我知道 php 脚本不会自动缓存,所以 readfile 每次都只是读取图像。

以上是关于使用 PHP 缓存生成的图像的主要内容,如果未能解决你的问题,请参考以下文章

PHP 缩略图图像生成器缓存:如何在 PHP 中正确设置 If-Last-Modified/Max-Age/Last-Modified HEADERS?

如何使用 PHP 让浏览器缓存图像?

在 PHP 中缓存动态图像

PHP 使用PHP从远程服务器获取和保存/缓存图像

PHP使用缓存生成静态页面

使用PHP从远程服务器获取并保存/缓存图像