Я пытаюсь заставить Apache кэшировать результаты запуска дорогого PHP-скрипта (он обращается к стороннему серверу с ограничением скорости), но кажется, что если клиент отправляет Если-Изменено-С
заголовок обходит кеш.
CacheEnable диск /script.php
CacheLock включен
CacheLockMaxAge 60
CacheIgnoreHeaders Set-Cookie
# предотвратить явный запрос клиентом некэшированного контента
CacheIgnoreCacheControl включен
CacheDetailHeader включен
PHP-скрипт устанавливает в своем ответе следующие заголовки:
Последнее изменение
установить текущее время, т.е. вс, 20 июня 2021 г., 11:30:20 по Гринвичу
Истекает
установить текущее время плюс 60 секунд, например. вс, 20 июня 2021 г., 11:31:20 по Гринвичу
Если я выдам следующий запрос:
ПОЛУЧИТЬ /script.php HTTP/1.1
Хост: example.com
Подключение: закрыть
Тогда кеширование работает корректно, и php-скрипт запускается только раз в минуту, а остальные запросы обслуживаются из кеша.
Однако выдача следующего запроса:
ПОЛУЧИТЬ /script.php HTTP/1.1
Хост: example.com
Подключение: закрыть
If-Modified-Since: воскресенье, 20 июня 2021 г., 11:30:30 по Гринвичу
Запускает php-скрипт каждый раз с помощью:
X-Cache-Detail: «промах кеша: попытка сохранения объекта» с сайта example.com
в ответ.
Я использую Apache 2.4.29 на Ubuntu 18.04.