Вы правы, предполагая, что это поведение связано с механизмом сеанса в PHP. Существует параметр конфигурации session.cache_limiter
, который управляет кэшированием заголовков HTTP, которые будут отправлены с ответом. Здесь по умолчанию установлено значение nocache
, которое отправляет
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Вы перезаписываете все эти заголовки в вашем контроллере, кроме Cache-Control
-header (вы только добавляете сюда свою настройку max-age=3600
).
Возможные решения:
- изменение конфигурации PHP (
session.cache_limiter
), например, none
- но это может создать проблемы для других приложений PHP
- установить
session.cache_limiter
для каждого запроса, используя session_cache_limiter()
- перезаписать полный
Cache-Control
-заголовок в вашем контроллере указанной строкой
Возможные значения для session.cache_limiter
и session_cache_limiter()
:
нет : заголовок не будет отправлен
NoCache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
частный
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private, max-age=10800, pre-check=10800
private_no_expire
Cache-Control: private, max-age=10800, pre-check=10800
* 1053 публика *:
Expires: pageload + 3 hours
Cache-Control: public, max-age=10800