Настройка кэширования HTTP-контента в Apache на Ubuntu 16.04

Узнайте, как повысить производительность вашего сайта, настроив кэширование HTTP-контента в Apache. Apache поддерживает несколько видов кэширования, включая кэширование по ключу/значению и файловое кэширование. В этом руководстве мы рассмотрим базовое кэширование HTTP-контента, которое является наиболее часто используемой формой кэширования в Apache.

Состояния кэша Apache

Система HTTP-кэширования Apache рассматривает содержимое как находящееся в одном из трех состояний:

  • Свежий: Новое содержимое, которое может быть загружено без проверки.
  • Несвежее: Содержимое, срок хранения которого истек в соответствии с установленными вами правилами, и которое необходимо проверить на наличие свежей копии.
  • Несуществующий: Содержимое, которое отсутствует.

Когда Apache получает запрос, он проверяет временную метку Time To Live (TTL). Если TTL истекло, Apache повторно проверяет содержимое, чтобы узнать, доступна ли обновленная версия.

  • Если обновленная версия доступна: Apache получит это содержимое и будет хранить его до истечения нового TTL.
  • Если существующая версия не была обновлена: Apache обновит TTL для файла и продолжит его обслуживание до истечения TTL.

Apache использует модуль mod_cache для оценки TTL содержимого и определения того, что делать при получении запроса. Он использует модуль mod_cache_disk для хранения данных на диске.

Размещение кэша Apache

Перед настройкой HTTP-кэширования необходимо решить, где разместить кэш: перед или за веб-сервером.

CacheQuickHandler — это параметр, который определяет, где будет размещен кэш.

Кэш перед веб-сервером

Если для CacheQuickHandler установлено значение On, кэш будет проверяться перед обращением к Apache.

Это очень быстрый способ обслуживания содержимого, поскольку запросам не нужно ждать, пока Apache завершит запрос. Однако это небезопасно. Поскольку все содержимое сайта размещается перед веб-сервером, аутентификация не происходит.

Это означает, что если у вас есть содержимое, которое требует от пользователей входа в систему или аутентификации, это содержимое будет доступно любому, кто его запросит.

При настройке HTTP-кэширования Apache, пожалуйста, обратите внимание, что CacheQuickHandler включен по умолчанию. Если это вызовет проблемы с безопасностью вашего сайта, вам нужно будет обязательно отключить его.

Кэш за веб-сервером

Если для CacheQuickHandler установлено значение Off, запрос пройдет через Apache, прежде чем будет извлечен из кэша.

Этот метод не так быстр, как размещение кэша перед веб-сервером, поскольку запросы должны обрабатываться через Apache. Однако он позволяет проводить аутентификацию и поэтому лучше всего подходит для любого контента, где пользователь должен войти в систему или пройти аутентификацию, прежде чем получить доступ к контенту.

В данном руководстве мы установим для CacheQuickHandler значение Off.

Включите модули Apache

Чтобы настроить кэширование HTTP, сначала установите пакет apache2-utils:

sudo apt-get update
sudo apt-get install apache2-utils

Включите необходимые модули Apache:

sudo a2enmod cache
sudo a2enmod cache_disk
sudo a2enmod expires
sudo a2enmod headers

Затем перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Добавьте конфигурации виртуальных хостов

Следующая конфигурация приведена в качестве примера. Она является хорошей отправной точкой для базового HTTP-кэша, размещенного за веб-сервером, где содержимое устанавливается на истечение 5 минут после последнего обращения к нему.

Существует множество конфигураций, которые можно добавлять и изменять. Полный список можно найти на сайте Apache.

Кэширование Apache лучше всего настраивать на основе каждого домена. Откройте файл конфигурации Apache для домена с помощью команды:

sudo nano /etc/apache2/sites-available/example.com.conf
Примечание .

Если вы не настроили ни одного виртуального хоста Apache, вы будете редактировать файл конфигурации по умолчанию:

sudo nano /etc/apache2/sites-available/000-default.conf

Прокрутите файл в самый низ и добавьте следующие строки над строкой </VirtualHost>:

CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie

<Location />
    CacheEnable disk
    CacheHeader on
    CacheDefaultExpire 800
    CacheMaxExpire 64000
    CacheIgnoreNoLastMod On
    ExpiresActive on
    ExpiresDefault A300
</Location>

Сохраните и выйдите из файла. Затем проверьте наличие ошибок конфигурации с помощью команды :

sudo apachectl configtest

Если в файле нет ошибок, перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Проверка HTTP-кэша

Чтобы убедиться, что система кэширования работает, проверьте каталог, в котором хранится кэш. Например, сначала перечислите содержимое каталога кэша:

ls -la /var/cache/apache2/mod_cache_disk/

Если трафик на ваш сервер очень мал, и вы только что настроили кэширование, вы, вероятно, увидите только несколько элементов:

user@localhost:/var/www/html# ls -la /var/cache/apache2/mod_cache_disk/
total 20    
drwxr-xr-x 5 www-data www-data 4096 Feb  1 21:43 .
drwxr-xr-x 3 root     root     4096 Jan  6 03:20 ..
drwx------ 3 www-data www-data 4096 Feb  1 21:42 2
drwx------ 3 www-data www-data 4096 Feb  1 21:42 T

Просмотрите свой сайт, а затем снова проверьте каталог:

user@localhost:/var/www/html# ls -la /var/cache/apache2/mod_cache_disk/

total 20 drwxr-xr-x 5 www-data www-data 4096 Feb 1 21:45 . drwxr-xr-x 3 root root 4096 Jan 6 03:20 .. drwx—— 3 www-data www-data 4096 Feb 1 21:42 2 drwx—— 3 www-data www-data 4096 Feb 1 21:43 b drwx—— 3 www-data www-data 4096 Feb 1 21:42 T

В приведенном выше примере каталог b был создан в ответ на просмотр одной из страниц сайта. Этот каталог содержит кэш сервера для этой страницы.

Вы также можете проверить кэширование вашего сайта с помощью инструмента, например, доступного на сайте SEO Site Checkup или Seomator.

  • Конфигурация

    Оцените статью
    cdelat.ru
    Добавить комментарий