首页新闻招聘找找看知识库

关于如何通过前端解决服务器缓存问题(走过路过,都看看,跪拜)

0
悬赏园豆:15 [已解决问题]

最近遇到一个服务器缓存的问题,具体就是每次浏览器通过前进和后退(就是历史记录)时,就算服务器数据库更改了,页面依旧保持之前的状态。具体的数据获取时通过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"/> 

然而并没啥用。

求路过的大神看看能够通过啥方法阻止页面缓存服务器数据,最好是通过前端控制,感谢感谢!

流炎飞雪的主页 流炎飞雪 | 初学一级 | 园豆:20
提问于:2017-09-14 17:29
< >
分享
最佳答案
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"); 
?> 

参考:http://www.cnblogs.com/o-ye/p/6509755.html

收获园豆:15
骑着蜗牛望太阳 | 菜鸟二级 |园豆:240 | 2017-09-15 09:22

非常感谢您的回复,刚刚看了下博文,与的我情况蛮符合的,但是php我不懂,这个该加哪里呢?我这边用的是thinkphp

流炎飞雪 | 园豆:20 (初学一级) | 2017-09-15 10:11

@流炎飞雪: 对thinkphp不熟。百度一下应该有很多教程的哇。电梯直达

骑着蜗牛望太阳 | 园豆:240 (菜鸟二级) | 2017-09-15 10:36

@骑着蜗牛望太阳: 感谢大神的指导,解决了我的问题,最终是通过在thinkphp框架的配置文件中添加代码:'HTTP_CACHE_CONTROL' => 'no-cache,no-store,must-revalidate',因为大神说的代码和这个是等效的,但是配置文件的优先级更高,而且默认为private,所以控制器里的不起作用,具体的细节门外汉是不清除了,分享的博客我一定会好好看看,感谢大神。

 
流炎飞雪 | 园豆:20 (初学一级) | 2017-09-15 13:49
   您需要登录以后才能回答,未注册用户请先注册