Neurons to bytes

Posts Tagged ‘compression’

Кэширование и сжатие файлов в apache2

02.25.2010 by Ouch! - 2 Comments
Posted 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 :)