Введение
Модуль mod_expires в Apache используется для управления настройкой HTTP-заголовка Expires и директивы max-age HTTP-заголовка Cache-Control в ответах сервера. Эти заголовки определяют, как долго клиент (браузер или прокси-сервер) будет кэшировать ресурсы. Оптимизация этих параметров может значительно снизить нагрузку на сервер и улучшить работу клиента за счет сокращения времени загрузки.
Оптимизированы настройки mod_expires.
Вот раздел mod_expires, оптимизированный для рабочего сервера и охватывающий различные типы файлов:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# HTML components
ExpiresByType text/html "access plus 0 seconds"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (can be cached for a long time)
ExpiresByType image/x-icon "access plus 1 year"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Webfonts
ExpiresByType font/otf "access plus 1 month"
ExpiresByType font/ttf "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
# Other
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
</IfModule>
Пояснение настроек
- ExpiresDefault — это время кэширования по умолчанию для ресурсов, которые не соответствуют другим правилам. Установлено значение 1 час, но вы можете изменить его в зависимости от того, как часто меняется контент.
- HTML и обмен данными. Эти типы контента обычно часто меняются, и их срок действия истекает немедленно (0 секунд) или через короткий период (1 час для каналов).
- Фавикон: они редко меняются и могут храниться в кэше на более длительный период (1 год).
- Медиа-файлы. Изображения, видео и аудио обычно обновляются нечасто. Срок действия ожидается через 1 месяц, но возможно его увеличение, если эти ресурсы меняются редко.
- CSS и JavaScript. Поскольку эти файлы могут меняться при обновлениях веб-сайта, но не так часто, как содержимое HTML, для них установлен более длительный период кэширования (1 год). Обеспечьте контроль версий этих файлов, чтобы избежать проблем с кэшированием при их обновлении.
- Веб-шрифты: шрифты обычно не изменяются после установки, поэтому подходит более длительный период кэширования (1 месяц).
- Другие типы. Для таких ресурсов, как PDF-файлы и определенные типы изображений, настройте время кэширования в зависимости от того, как часто эти ресурсы обновляются.
Дополнительные замечания
- Измените эти настройки в зависимости от частоты обновления вашего контента.
- Убедитесь, что у вас есть стратегия контроля версий для таких ресурсов, как CSS и JavaScript, чтобы избежать проблем с кэшированием при обновлении этих файлов.
- Обратите внимание, что агрессивное кэширование может вызвать проблемы, когда контент обновляется на сервере, но все еще кэшируется в клиентском браузере.
- Регулярно отслеживайте и адаптируйте эти параметры с учетом конкретных потребностей и отзывов вашей производственной среды.