Условно установленные заголовки expires в конфиге Apache - PullRequest
1 голос
/ 16 июня 2011

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

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/run/$site/p(\d+)/(\w+) /logout.pl/$2 [NS,L]

Было бы неплохо, если бы я мог сделать что-то вроде:

rewritecond ${PSTAT:$site:$1} =devel
ExpiresByType image/jpg "now plus 1 second"

Хотя, конечно, это не сработает.

Есть ли решение?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Прикол, который сработал для меня, заключается в том, чтобы сначала установить заголовки безоговорочно:

ExpiresByType image/jpg "now plus 1 second"
...

, а затем сбросить заголовок в случае, если мы находимся в режиме разработки:

Header set Cache-control "no-cache" env=devel
Header unset expires env=devel

Этотребует, чтобы у вас был логический env devel, предварительно инициализированный в зависимости от вашего режима.В нашем случае мы выбираем имя хоста, хотим ли мы быть devel или нет (devel.domain.com vs. www.domain.com).

0 голосов
/ 16 июня 2011

Исходя из того, что сказал пришелец, мне удалось найти ответ на мою проблему.

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/images/(\d+)/(\w+) - [E=devel:1]

header set cache-control "no-cache" env=devel
header unset expires env=devel

(/images/(\d+) - папка изображений для определенного номера проекта (\d+))

Флаг E rewriterule позволяет установить переменную среды в случае, если правило соответствует. - на самом деле ничего не переписывает. Таким образом, он проверяет выходные данные сценария, используя rewritecond, отправляя ему номер проекта из rewriterule, а затем устанавливает переменную среды в случае, если оба условия совпадают. Затем header условно устанавливается на основе наличия этой переменной среды.

...