Настройка кеширования в Apache

По умолчанию Apache настроен так, что кеширование запрещено даже для статического контента. Это означает, что при каждом обращении к сайту заново подгружаются все файлы CSS, JavaScript и картинки, что явно не способствует быстродействию.
Чтобы этого избежать, следует настроить выдачу заголовков Expires (время устаревания контента), ETag (строка, которая изменяется в случае изменения файла) и Cache Control (управление кешированием).
В Apache 2.x это делается с помощью следующих директив:

# добавление сжатия файлов
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-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

Header append Vary User-Agent

# разрешение кеширования файлов на стороне клиента
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
    Header append Cache-Control private
</FilesMatch>

# включение заголовка Expires для всех файлов сроком на месяц
ExpiresActive On
ExpiresDefault "access plus 1 month"

# выключение Expires для HTML-файлов и PHP-скриптов
<FilesMatch .*\.(shtml|html|phtml|php)$>
    ExpiresActive Off
</FilesMatch>

# Выдача заголовка ETag
FileETag MTime Size

Для Apache 1.3 с модулем mod_gzip:

Header append Vary User-Agent

# разрешение кеширования файлов на стороне клиента
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
    Header append Cache-Control private
</FilesMatch>

# включение заголовка Expires для всех файлов сроком на месяц
ExpiresActive On
ExpiresDefault "access plus 1 month"

# выключение Expires для HTML-файлов и PHP-скриптов
<FilesMatch .*\.(shtml|html|phtml|php)$>
    ExpiresActive Off
</FilesMatch>

# Выдача заголовка ETag
FileETag MTime Size

# Включение модуля mod_gzip
<IfModule mod_gzip.c>
    mod_gzip_on                   Yes
    mod_gzip_can_negotiate        Yes
    mod_gzip_static_suffix        .gz
    AddEncoding              gzip .gz
    mod_gzip_update_static        No

    mod_gzip_command_version      '/mod_gzip_status'
    mod_gzip_temp_dir             /tmp

    mod_gzip_keep_workfiles       No
    mod_gzip_minimum_file_size    500
    mod_gzip_maximum_file_size    5000000
    mod_gzip_maximum_inmem_size   60000

    mod_gzip_min_http             1000
    mod_gzip_handle_methods       GET POST
    mod_gzip_item_exclude         reqheader  "User-agent: Mozilla/4.0[678]"

    mod_gzip_item_include         file       \.html$
    mod_gzip_item_include         file       \.js$
    mod_gzip_item_include         file       \.css$

# mod_gzip_item_include         file       \.pl$
# mod_gzip_item_include         handler    ^cgi-script$

    mod_gzip_item_include         mime       ^text/html$
    mod_gzip_item_include         mime       ^text/plain$
    mod_gzip_item_include         mime       ^httpd/unix-directory$
    mod_gzip_item_exclude         mime       ^image/
    mod_gzip_dechunk              Yes

    mod_gzip_add_header_count     Yes
</IfModule>

При написании статьи использовались материалы сайта Webo.In

Комментариев: 1

  1. Галактион пишет:

    Менеджер по продажам « Работа….

    Менеджер по продажам « Работа.

Оставьте свой отзыв!


Rambler's Top100