Как перенаправить или mod_rewrite устаревшее изображение в каталоге с помощью .htaccess - PullRequest
1 голос
/ 31 марта 2011

У меня есть настройка перенаправления, которая ищет изображение в каталоге, и если оно не существует, оно будет перенаправлено в php-файл, который изменяет размер изображения и сохраняет его в этом каталоге. Я получил это работать отлично. Проблема сейчас в том, что мне нужно найти хороший способ перенаправить его, если написанному изображению исполнилось 4 часа. Я посмотрел в Mod_expires, но не смог найти способ перенаправить на мой php resizer изображения, когда изображение 4 часа.

Я знаю, что могу сделать это на 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 /»

Теперь, когда у меня все заработало, как заставить его перенаправить в "/image/resize_image.php", когда "1234_01_thumb.jpg" получит x часов? В какой-то момент кому-то придется обновить эту фотографию, особенно если он загрузил не ту, чтобы она не была постоянной.

Пожалуйста, помогите. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 31 марта 2011

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;
  }
}

Я действительно надеюсь, что вы получаете то, что я пытаюсь сказать здесь, когда я печатаю с моего телефона ...

0 голосов
/ 31 марта 2011

Что ж, я надеюсь, что кто-то исправит меня, если я ошибаюсь, но в последний раз я знал, что PHP запускается как модуль в Apache через mod_php, так что веб-сервер так или иначе все еще должен перетекать через ваш код.

Хм. Моей первоначальной мыслью было установить значение контроля кэша, используя что-то вроде:

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

но это не сработает. Это просто скажет Apache, чтобы получить новую копию изображения ...

EDIT:

Да, идея @ chris_mcclellan - это то, куда я направлялся в своем мыслительном процессе. Я побежал бы с этим и посмотрел бы, соответствует ли это вашим целям производительности.

...