最近遇到一个服务器缓存的问题,具体就是每次浏览器通过前进和后退(就是历史记录)时,就算服务器数据库更改了,页面依旧保持之前的状态。具体的数据获取时通过thinkphp模板实现的。
然后百度了很久很久,,,最多的答案是
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
然而并没啥用。
求路过的大神看看能够通过啥方法阻止页面缓存服务器数据,最好是通过前端控制,感谢感谢!
使用上面的方法强制浏览器不再缓存web页面,必须注意以下几点:
只有在使用安全连接时“pragma: no-cache”才防止浏览器缓存页面。对于不受安全保护的页面,“pragma: no-cache”被视为与“expires: -1”相同,此时浏览器仍旧缓存页面。这种方法不能适用于所有的浏览器。所以最好的方案应该是:混合运用客户端脚本和服务器端脚本。
服务端程序控制:
<?php header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache"); header("Expires:0"); ?>
非常感谢您的回复,刚刚看了下博文,与的我情况蛮符合的,但是php我不懂,这个该加哪里呢?我这边用的是thinkphp
@流炎飞雪: 对thinkphp不熟。百度一下应该有很多教程的哇。电梯直达
@骑着蜗牛望太阳: 感谢大神的指导,解决了我的问题,最终是通过在thinkphp框架的配置文件中添加代码:'HTTP_CACHE_CONTROL' => 'no-cache,no-store,must-revalidate',因为大神说的代码和这个是等效的,但是配置文件的优先级更高,而且默认为private,所以控制器里的不起作用,具体的细节门外汉是不清除了,分享的博客我一定会好好看看,感谢大神。