如何抑制缓存

通常浏览器会将XMLHttpRequest响应缓存 起来,这很有用,但有时候这并不是你想要的,因此你必须对缓存加以控制.PHPChina 开源社区门户0J&AT"H%]B0S?R

PHPChina 开源社区门户'jsy5H$K�@I5Q+`XD

我 们通常以GET和POST发出请求,其中GET作为查询用(GET只应该作为查询用,作为只读查询,而POST用于插入、修改、删除等相应操作.),如果 你用POST作为查询当然数据通常不会被缓存起来,但如果你理解并遵循RESTful service的解释你会用GET(在你需要的仅仅是查询之时).而此时你将无法避免的会发现GET并不总是像你所想的一样正常工作 ,当你明白这是缓存在作怪时你需要对其进行控制,让它在需要的时候才缓存被请求的数据.PHPChina 开源社区门户!G2Kw]'Or9}6[

'{rEo a ar)e51903 而控制缓存通常有5种方法 PHPChina 开源社区门户w-JD /X

PHPChina 开源社区门户+W}yci3g;`

        1、你可以给请求的url加一个时间戳,让url具有独特性,

*GEK]q+~ R8m51903

JHMDJ�E51903                var url="simple.php?figure1=value1&figure2=value2&tmpTime="+new Date().getTime(); PHPChina 开源社区门户2O:WI,~HEH ZR9X
        这是你会发现这种简单的方法竟然给程序带来令人吃惊的健壮性和可移植性.PHPChina 开源社区门户&M o4{)Y{9yj

5F'U2VR {3r$i*r51903         2、你还可以为请求加上头部信息

4KSm�B'ocR51903 PHPChina 开源社区门户1MoPw rw

               Req.setRequestHeader("If-Modified-since","Mon,3 Mar 2008 16:00:00 GMT");
3u?f$@.e*k ej51903
        3、也可以在web服务器里设置响应头部以抑制响应被缓存,PHPChina 开源社区门户CGmB ? m&y v

PHPChina 开源社区门户/7g-Nn'g

               header("Mon,3 Mar 2008 16:00:00 GMT"); header("Last-Modified:".gmdate("D,d M Y H:i:s"."GMT")); header("Cache-Control:no-cache,must-revalidate");

5yT7iI~�s.I51903 PHPChina 开源社区门户+uD&OG Y.|7/1}Q

header("Pragma:no-cache");

#{5uIF8u9/51903

7O Z8oU x51903     4、使用POST而不是GET不过有时POST还是被缓存的,虽如REST 所解释,POST和GET不应互换,但无论如何,POST也不是总有效的在某些资源上实际上也会缓存POST响应.

    5.  在服務器端可以試試這個,如果你有機會獲得回應(你也許能夠做到這一點,通過過濾器)。

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");

PHPChina 开源社区门户5AS.r*R$zTca

J;u,l R*Y{51903 另一方面,在服务器消耗不太可能接近缓存是,缓存是个好东西, 为鼓励缓存,你甚至可以无视以上建议而在响应头部加上将来的某个时间或更好的对于较小数据把它缓存于javascrīpt程序本身(见前面"客户端缓存").

ZL3y&k.| mu0rf51903 PHPChina 开源社区门户Qn Vqoz

原文出处:http://www.subsun.net/html/2008/25.html

 

 this.res.setHeader("Expires", "-1");

    this.res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");

    this.res.setHeader("Pragma", "no-cache");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis提供了一些机制来控制缓存数据的一致性,以确保查询结果的准确性。以下是一些常用的方法: 1. 刷新缓存:在更新、插入或删除数据时,Mybatis会自动清空与该数据相关的缓存。但是,有时候我们可能需要手动刷新缓存,以确保缓存中的数据是最新的。可以使用`SqlSession`的`clearCache()`方法来清空一级缓存,或者使用`SqlSessionFactory`的`clearCache()`方法来清空二级缓存。 2. 配置缓存刷新策略:在Mybatis的配置文件中,可以设置缓存刷新策略来控制缓存的更新。例如,可以设置缓存的过期时间或者使用定时任务来定期刷新缓存。 3. 手动更新缓存:在某些特定场景下,可能需要手动更新缓存。例如,当其他业务逻辑修改了数据库中的数据时,可以手动调用`SqlSession`的`update`方法更新缓存。 4. 禁用缓存:对于不需要缓存的查询,可以在Mapper接口的方法上使用`@Options`注解,并设置`useCache`属性为false,来禁用缓存。 5. 清除指定缓存:除了清空整个缓存之外,还可以使用`SqlSessionFactory`的`getCache`方法获取指定的缓存对象,并调用其`clear`方法来清除特定的缓存。 需要注意的是,缓存的一致性是需要开发者自行控制的。在使用缓存时,应该了解缓存机制的原理,并根据业务需求和数据更新的情况,合理配置和使用缓存,以保证缓存数据的一致性和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值