mod_rewrite для обслуживания статических кэшированных файлов, если они существуют и если исходный файл не изменился - PullRequest
1 голос
/ 03 марта 2011

Я работаю над проектом, который обрабатывает изображения, сохраняет обработанные изображения в кэш-памяти и выводит обработанное изображение на клиент.Допустим, проект находится в / project /, кэш находится в / project / cache /, а исходные изображения расположены где угодно на сервере (например, в / images / или / otherproject / images /).Я могу настроить кеш для зеркального отображения пути к исходному изображению (например, если исходным изображением является /images/image.jpg, кеш для этого изображения может быть /project/cache/images/image.jpg) и запросык проекту примерно / project / path / to / image (например, /project/images/image.jpg).

Я бы хотел обслуживать изображения из кеша, если они существуют, максимально эффективно,Однако я также хочу иметь возможность проверить, изменилось ли исходное изображение с момента создания кэшированного изображения.В идеале все это должно быть сделано с помощью mod_rewrite, поэтому PHP не нужно будет использовать для выполнения какой-либо работы.

Возможно ли это?Какими должны быть правила mod_rewrite для того, чтобы это работало?

В качестве альтернативы может показаться хорошим компромиссом, если бы mod_rewrite большую часть времени обслуживал кэшированный файл, но отправлял 1 из X запросов вPHP-скрипт для файлов, которые кэшируются.Это возможно?

Ответы [ 2 ]

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

Вы не можете получить доступ к метке времени изменения файла из RewriteRule, поэтому для этой задачи нет способа использовать PHP или другой язык программирования.

С другой стороны, это действительно просто в PHP, поэтому вам следует сначала проверить, является ли решение PHP достаточно хорошим в вашем случае. Только если это не так, вы должны искать альтернативы.

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

Что, если вы использовали клиент для выполнения какой-либо работы? Скажем, вы отображаете изображение в веб-браузере и всегда используете src = "/ cache / images / foobar.jpg" и добавляете onerror = "this.src = '/ images / foobar.jpg'". В mod_rewrite отправьте все, что идет в / images / dir, в скрипт, который вернется и сгенерирует изображение в кеше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...