Я настраиваю кеширование Apache в CentOS, используя mod_cache
и mod_cache_disk
с конфигурацией внизу этого сообщения, но страница не кэшируется. я включен CacheDetailHeader on
чтобы получить некоторую отладочную информацию.
Когда я попадаю на страницу, в ответе HTTP отображается X-Cache-Detail: "Expires header already expired; not cacheable"
а заголовок 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>
К вашему сведению. Я использую mod_cache с WP, потому что этот проект основан на Коренная порода framework, который, похоже, не работает с WP Super Cache и другими плагинами. Они рекомендуют использовать Memcached, Nginx или Varnish, ни один из которых у меня нет доступа для установки.
Обновить
WP_CACHE
установлен на true
CacheMaxExpire 86400
настроить и X-Cache-Detail
ошибка изменена на s-maxage or max-age zero and no Last-Modified or Etag
и Cache-Control
заголовок сейчас 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:, который вы показываете, на страницах, которые запускают сеанс. Эта дата соответствует день рождения PHP разработчика кто реализовал эту функцию.
Вы можете настроить это поведение, установив session.cache_limiter
в php.ini
.
Если вы используете WordPress, нет необходимости менять это значение по умолчанию nocache
, поскольку страницы с этим заголовком соответствуют страницам, отправляемым пользователям, которые вошли в систему или уже вошли в систему, и, следовательно, Apache в любом случае не должен кэшировать их. Вы можете изменить его на private
или private_no_expire
чтобы разрешить браузерам, вошедшим в систему, кэшировать страницы.
Чтобы проверить свой кеш, используйте окно в режиме инкогнито и зайдите на свой сайт WordPress при выходе из системы.