Назад | Перейти на главную страницу

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

Я настраиваю кеширование 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, ни один из которых у меня нет доступа для установки.

Обновить

<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 при выходе из системы.