У меня проблема с mod_expires. Я просто устанавливаю срок действия по умолчанию 1 день, а затем устанавливаю срок действия по типу (для изображений и аудио).
Так, например, я установил ExpiresByType image / jpeg «доступ плюс 1 месяц». Проблема в том, что каждая страница имеет правильный Expires DateTime, поэтому срок его действия истекает плюс 1 день, но для изображений и аудио (image / jpeg, image / png, audio / mpeg) истекает срок действия 12 часов. Это моя конфигурация:
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDirLevels 2
CacheDirLength 1
</IfModule>
....
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
<Location />
CacheEnable disk
CacheHeader on
CacheDefaultExpire 600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.5
ExpiresActive on
ExpiresDefault "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 months"
ExpiresByType image/png "access plus 1 months"
ExpiresByType audio/mpeg "access plus 1 months"
Header merge Cache-Control public
FileETag All
</Location>
....
Затем я пытаюсь добавить другое местоположение и не использую ExpiresByType, но все равно безуспешно. Вот что я пробую:
<LocationMatch "(.png|.mp3|.jpg|.jpeg)">
ExpiresActive on
Header Set Cache-Control "max-age=1678400"
ExpiresDefault "access plus 1 days"
FileETag All
</LocationMatch>
Заголовок Cache-Control имеет правильный максимальный возраст, но срок действия по-прежнему составляет 12 часов.
Затем я пытаюсь установить его вручную, поэтому пробую что-то вроде:
Header Set Expires "Thu, 1 Jan 2020 00:00:00 GMT"
И хорошо, что это работает, но мне нужно установить его на 1 месяц / год с момента последнего доступа.
Apache выполняет прокси-доступ только к веб-серверу Gunicorn, который фактически обслуживает текущее приложение.
Я столкнулся с той же проблемой, я не мог понять, какой модуль устанавливает заголовок Expires на 12 часов. Я решил вообще не использовать mod_expires. (даже после того, как я отключил модуль mod_expires, по-видимому, другой модуль сидел в заголовках Expire, я не смог найти, какой модуль это сделал)
Итак, как я подошел к проблеме:
Header unset Expires
# Activate browser-caching without the expires module.
Header merge Cache-Control max-age=604800
<FilesMatch "\.(js|css)$">
Header merge Cache-Control max-age=86400
</FilesMatch>
Можно установить любое количество блоков FilesMatch.