HTTP-ответ показывает Истекает в 1981 году при использовании mod_cache

Я настраиваю кеширование 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>
0
задан 20 August 2019 в 20:27
1 ответ

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

Вы можете настроить это поведение, установив session.cache_limiter в php.ini.

Если вы используете WordPress, то нет необходимости менять это значение по умолчанию на nocache, так как страницы с этим заголовком соответствуют страницам, которые отправляются пользователям, вошедшим или уже вошедшим в систему, и поэтому не должны быть кэшированы Apache в любом случае. Вы можете изменить его на private или private_no_expire, чтобы позволить зарегистрированным в браузерах пользователей кэшировать страницы.

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

.
3
ответ дан 4 December 2019 в 12:15

Теги

Похожие вопросы