You're right by assuming that this behaviour is connected to the session mechanism in PHP. There is a configuration setting session.cache_limiter
that controls the caching HTTP headers that will be sent with the response. The default setting here is nocache
which sends
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
You overwrite all of these headers within your controller besides the Cache-Control
-header (you only append your max-age=3600
setting here).
Possible solutions are:
- changing the PHP configuration (
session.cache_limiter
) to e.g. none
- but this could introduce problems to other PHP applications
- set the
session.cache_limiter
on each request using session_cache_limiter()
- overwrite the full
Cache-Control
-header in your controller with the designated string
The possible values for session.cache_limiter
and session_cache_limiter()
are:
none: no header will be sent
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
private:
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
public:
Expires: pageload + 3 hours
Cache-Control: public, max-age=10800
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…