Кэширование и сжатие файлов в apache2
02.25.2010 by Ouch! - 2 CommentsPosted in программерское
Прочёл статью Настройка кеширования в Apache. Хотелось бы дополнить её, но только для Apache2. Первый апач рассматривать не буду, он устарел, а всегда нужно стремиться к новому :)
Итак, как правильно заметил автор, по-умолчанию в Apache кэширование и сжатие отключено. Чтобы их включить, нужно подключить в Apache нужные модули. Это модули mod_deflate, mod_expires и mod_headers.
Я сделал свой конфиг, он отличается от конфига из статьи тем, что ваш сайт будет работать, даже если нужных модулей не будет установлено или включено. Плюс, я добавил установку mime-типов и кодировки по расширению, полезная штука. Итак, вот конфиг:
# Добавляем mime-тип и кодировку
AddType 'text/css; charset=utf-8' .css
AddType 'text/javascript; charset=utf-8' .js
AddType 'image/x-icon; charset=utf-8' .ico
AddType 'text/html; charset=utf-8' .html .shtml
AddType 'text/xml; charset=utf-8' .xml
# добавление сжатия файлов
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml image/x-icon text/css text/javascript
# обработка "кривых" броузеров
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch Konqueror no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent
# разрешение кеширования файлов на стороне клиента
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
Header append Cache-Control private
</FilesMatch>
</IfModule>
# включение заголовка Expires для всех файлов сроком на месяц
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
# выключение Expires для HTML-файлов и PHP-скриптов
<FilesMatch .*\.(shtml|html|phtml|php)$>
ExpiresActive Off
</FilesMatch>
</IfModule>
# Выдача заголовка ETag (core feature)
FileETag MTime Size
Положите эти настройки в корневой .htaccess на вашем сайте и подключите модули, указанные в начале статьи. Всё должно работать.
Вот готовый архив с модулями для windows-инсталляции Apache2. Линуксойды же справятся сами, использовав утилиту a2enmod :)