Перезаписать заголовки кэша с помощью mod_expires
Я хочу установить заголовки кэша, используя модуль mod_expires из apache. Моя конфигурация выглядит примерно так:
<LocationMatch ^/static >
ExpiresDefault "access plus 1 years"
</LocationMatch>
Проблема в том, что файлы генерируются третьей системой, которую я не контролирую. Эти системы предоставляют файлы со следующими заголовками:
Date Mon, 24 Oct 2011 08:39:02 GMT
Cache-Control no-cache,no-store,must-revalidate
Pragma no-cache
Expires Thu, 01 Dec 1994 16:00:00 GMT
Эти заголовки делают невозможным установку заголовков кэша с помощью mod_expires. http://httpd.apache.org/docs/2.2/mod/mod_expires.html говорит нам, почему:
Если заголовок Expires уже является частью ответа, сгенерированного сервером, например, когда он генерируется сценарием CGI или прокси-сервером с исходного сервера, этот модуль не изменяет и не добавляет заголовок Expires или Cache-Control.
Есть ли какой-нибудь возможный способ обойти это правило и перезаписать заголовки с помощью mod_expires?
Обновление: Одним из возможных решений, чтобы избежать этого ограничения, является использование только mod_headers для установки заголовков кэша. К сожалению, это не альтернатива, потому что значения должны быть рассчитаны.
Спасибо, это заранее.
3 ответа
К сожалению, это известное ограничение, и нам пришлось использовать только mod_headers
,
Предложение Regilero не будет работать, потому что директивы заголовка будут обработаны очень поздно при обработке ответа - после mod_expire
директивы. Таким образом, вы бы сбросили заголовки после mod_expires
сделал (или не сделал) то, что должен был сделать.
Если это Apache 2.2, вы можете попробовать поставить early
в конце каждой директивы заголовка. Это скажет ему сделать это на ранней стадии обработки ответа, а не в конце.
так что постарайтесь:
<LocationMatch ^/static >
Header unset Cache-Control early
Header unset Pragma early
Header unset Expires early
ExpiresDefault "access plus 1 years"
</LocationMatch>
Не проверял, но попробуй...
Вы пытались смешать его с mod_headers?
<LocationMatch ^/static >
Header unset Cache-Control
Header unset Pragma
Header unset Expires
ExpiresDefault "access plus 1 years"
</LocationMatch>
Не проверено, но в случае...