Я настраиваю кеширование Apache на CentOS, используя mod_cache
и mod_cache_disk
с конфигурацией внизу этого сообщения, но на странице не кешируется.Я включил CacheDetailHeader в
, чтобы получить некоторую отладочную информацию.
Когда я открываю страницу, HTTP-ответ показывает X-Cache-Detail: «Срок действия заголовка уже истек; не кэшируется»
и заголовок Expires установлен на некоторую дату в 1981 году, несмотря на правильность даты.
Date: Mon, 19 Aug 2019 23:39:03 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Тест проводится с использованием браузера Chrome Incognito на общедоступной странице WordPress.
Полная конфигурация. CacheRoot существует и доступен для записи для пользователя Apache.
# The following line could be required or not depending on your Apache installation
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
CacheQuickHandler off
CacheDetailHeader on
CacheIgnoreNoLastMod On
CacheDefaultExpire 7200
CacheIgnoreCacheControl On
CacheLastModifiedFactor 0.5
CacheIgnoreHeaders Set-Cookie Cookie
CacheHeader on
CacheLock on
CacheDisable /wp-admin
CacheDisable /wp-login.php
CacheDisable /wp-cron.php
SetOutputFilter CACHE
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/rss+xml text/xml image/svg+xml
# The following line could be required or not depending on your Apache installation
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
CacheMaxFileSize 2000000
</IfModule>
</IfModule>
FYI - Причина, по которой я использую mod_cache с WP, заключается в том, что этот проект основан на структуре Bedrock , которая, похоже, плохо работает с WP Super Cache и другие плагины. Они рекомендуют использовать Memcached, Nginx или Varnish, ни один из которых у меня нет доступа для установки.
Обновление
WP_CACHE
установлено на true
CacheMaxExpire 86400
для настройки, а ошибка X-Cache-Detail
изменена на s-maxage или max-age ноль, без Last-Modified или Etag
и Cache- Заголовок элемента управления
теперь Cache-Control: private, proxy-revalidate, s-maxage = 0
mod_expires
: <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access 1 month"
...
</IfModule>
PHP настроен на отправку отключающих кэш заголовков, включая Expires: header, который вы показываете, на страницы, с которых начинается сессия. Эта дата соответствует дню рождения PHP-разработчика, реализовавшего эту возможность.
Вы можете настроить это поведение, установив session.cache_limiter
в php.ini
.
Если вы используете WordPress, то нет необходимости менять это значение по умолчанию на nocache
, так как страницы с этим заголовком соответствуют страницам, которые отправляются пользователям, вошедшим или уже вошедшим в систему, и поэтому не должны быть кэшированы Apache в любом случае. Вы можете изменить его на private
или private_no_expire
, чтобы позволить зарегистрированным в браузерах пользователей кэшировать страницы.
Чтобы проверить свой кэш, воспользуйтесь окном инкогнито и нажмите на сайт WordPress во время выхода из системы.
.