При правильной настройке кэширования браузеры пользователей получают указание локально хранить и повторно использовать ранее полученные ресурсы. Это обеспечивает более быструю загрузку страниц для возвращающихся пользователей, поскольку их браузеры могут получать ресурсы из локального кэша, а не делать повторные запросы к серверу.
Большинство современных веб-сайтов и веб-приложений используют кэширование в браузере для улучшения качества работы пользователей. В Apache это достигается с помощью специальных заголовков, которые указывают браузеру пользователя, какое содержимое должно быть кэшировано и как долго. Кэширование в Apache может быть реализовано с помощью различных механизмов, таких как mod_cache, mod_cache_disk, mod_mem_cache и mod_socache_shmcb, в зависимости от требований и доступных ресурсов.
Настройка кэширования в Apache включает в себя понимание природы вашего веб-контента, определение того, какой контент должен быть кэширован, и настройку соответствующих директив кэширования. Это может включать установку сроков действия, размера кэша и других параметров, связанных с поведением кэша.
Шаги по включению и настройке кэширования в Apache
Установите необходимые модули кэширования для Apache.
1 2 | sudo a2enmod socache_shmcb expires systemctl restart apache2 |
В дистрибутиве с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
Откройте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/apache2.conf |
Добавьте следующие строки, чтобы настроить параметры кэша в соответствии с вашими потребностями.
1 2 3 4 5 6 7 | <IfModule mod_cache_socache.c> CacheEnable socache / CacheSocache shmcb CacheSocacheMaxSize 512000 CacheDefaultExpire 3600 #... </IfModule> |
Где
- CacheEnable - Эта директива определяет тип хранилища и URL-пространство для кэша. Пример: CacheEnable socache / включает кэширование на основе памяти (с использованием кэша общих объектов) для всех URL.
- CacheSocache - Определяет провайдера кэша общих объектов, который будет использоваться для кэширования. В данном случае shmcb указывает на использование механизма общей памяти для хранения.
- CacheSocacheMaxSize - Устанавливает максимальный объем хранилища общей памяти в байтах. В данном примере для хранения кэша выделено 512000 байт (или 0,5 МБ).
- CacheDefaultExpire - Определяет время истечения срока действия кэша по умолчанию в секундах. Если в HTTP-заголовках не указано время истечения, используется это значение. Пример: 3600 устанавливает время истечения по умолчанию в один час.
Для более детального контроля настройте заголовки управления кэшем в файле htaccess или виртуального хоста.
1 2 3 4 | <FilesMatch ".(jpg|jpeg|png|gif|js|css)$"> ExpiresActive On ExpiresDefault "access plus 1 month" </FilesMatch> |
Перезапустите Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Убедитесь, что кэширование работает, просмотрев HTTP-заголовки кэшированного ресурса.
1 | curl -I https://www.example.com/image.png |
1 2 3 4 5 | HTTP/1.1 200 OK ... ETag: "1f61-503bb7a696d79" Cache-Control: max-age=2592000 ... |
Ищите в ответе такие заголовки, как Cache-Control и ETag, чтобы подтвердить кэширование.