изменить размер и кэшировать изображения с помощью php и использовать mod_rewrite для доступа к обналиченным - PullRequest
0 голосов
/ 25 августа 2011

Я хочу изменить размер изображения в URL-адресе следующим образом: http://www.domain.nl/images/chached/200x200/name.jpg Если изображение не существует, я хочу его сгенерировать и кэшировать.

Как мне выполнить эту проверкуесли файл существует, без необходимости создавать папку «200x200» в каталоге / images / chached / и без использования PHP (медленнее).

Есть ли способ сделать это с помощью mod_rewrite (быстрее))?Или это просто невозможно?

Я использую Kohana 3, ведьма использует этот код mod_rewite:

# Turn on URL rewriting
RewriteEngine On
# Installation directory
# RewriteBase /kohana/
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

1 Ответ

1 голос
/ 25 августа 2011

Используйте маршрутизацию Kohana для установки нового маршрута /images/cached/<size>/<name> (или аналогичного) и пусть он будет обработан действием по вашему выбору. Затем в коде этого действия сгенерируйте изображение из этих параметров, сохраните результат по этому пути и передайте изображение клиенту.

Таким образом, первый запрос (файл не существует) направляется прямо в index.php (потому что RewriteRule .* index.php/$0 [PT]), второй и каждый последующий запрос будет обслуживаться Apache напрямую (потому что теперь RewriteCond %{REQUEST_FILENAME} !-f больше не совпадает ).

...