缓存控制失败

时间:2012-09-26 10:12:08

标签: php html

我的index.php页面一直被缓存,显示旧计时器值和其他值,即使我正在使用它:

session_cache_limiter( 'nocache' );
session_start( );
header( 'Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0' );

阻止浏览器缓存页面。我已经检查了Firefly中的标题输出,他们一直在说:

Cache-Control:private, max-age=10800, pre-check=10800

我以前在HTML META中有这个:

<META HTTP-EQUIV="cache-control" content="no-cache" />
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

但是已经禁用了那些以检查它们是否在干扰,但是启用或禁用没有任何区别。

感谢所有帮助!

2 个答案:

答案 0 :(得分:3)

  

FireFly中的标头输出仍然是Cache-Control私有,   max-age = 10800,pre-check = 10800,no-cache,must-revalidate,   post-check = 0,pre-check = 0

这意味着,因为你设置了这个:

Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0

您的应用/页面中的其他一些组件/配置正在设置:

Cache-Control: private, max-age=10800, pre-check=10800

并将两者发送给最终用户。当浏览器读取它们时,“Cache-Control:private”会覆盖您的值,从而导致页面被缓存。

注意:header() will by default override any headers that are previously set,因此可能会在代码行之后设置,因为您的行应该覆盖之前的任何代码。

您需要找出设置这些“私有”缓存控制标头的内容并禁用/注释,否则它将无法正常工作。也许你的代码后面会有其他部分?

答案 1 :(得分:1)

将缓存过期日期设置为旧日期。

header( 'Expires: Fri, 01 Jan 2010 00:00:00 GMT' );