1

我有一个重定向设置,它在目录中查找图像,如果它不存在,它将重定向到调整图像大小并将其保存到该目录的 php 文件。我让它工作得很好。现在的问题是,如果写入的图像是 4 小时前的,我需要找到一种重定向它的好方法。我查看了 Mod_expires 但在图像 4 小时前找不到重定向到我的 php 图像调整器的方法。

我知道我可以在 PHP 中做到这一点,但重点是通过使用 apache 而不是 PHP 来减少服务器负载。我正在开发的网站每天都有数千名观众,所以我真的需要有效地缓存调整大小的图像。这是我正在做的一个例子......

  1. 浏览器请求“http://images.mydomain.com/image/1234_01_thumb.jpg”
  2. Apache 检查“http://images.mydomain.com/image/1234_01_thumb.jpg”是否存在
  3. 如果不存在,则重定向到“/image/resize_image.php”并在“/images/”文件夹中生成缩略图

既然我已经开始工作了,当“1234_01_thumb.jpg”变得 x 小时时,如何让它重定向到“/image/resize_image.php”?在某些时候,有人将不得不更新那张照片,特别是如果他们上传了错误的照片,因此它不会是永久性的。

请帮忙。提前致谢!

4

2 回答 2

1

http://php.net/manual/en/function.exif-read-data.php

您可以获取文件日期,然后根据当前日期进行检查time()

说这样的话:

$img_head = exif_read_data($img_path, 'IFD0');
if ($img_head != false) {
  if ($img_head['FILE.FileDateTime'] < (time() - 14400)) {
    header ("Location: old_image.php");
    exit;
  }
}

我真的希望你能在我用手机打字的时候明白我想说的……

于 2011-03-31T05:27:47.073 回答
0

好吧,如果我错了,我希望有人纠正我,但我最后一次知道 PHP 在 Apache 中作为一个模块运行,通过mod_php,所以 Web 服务器仍然不得不以一种或另一种方式处理你的代码。

唔。我最初的想法是使用类似的东西来设置缓存控制值:

<FilesMatch "\.(jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=14400, must-revalidate"
</FilesMatch>

但这行不通。那只会告诉Apache获取图像的新副本......

编辑:

是的,@chris_mcclellan 的想法是我思考过程的方向。我会运行它,看看它是否符合您的性能目标。

于 2011-03-31T05:30:18.863 回答