大家一起来研究一下url中加入new Date()参数的一定程度上防止数据缓存的原理
黑暗浪子 2014-12-20 03:54:04 项目中经常遇到缓存问题,而且经常可以在url中添加一个new Date()参数,缓存问题得以解决,比如:
http://localhost:8080/demo/aa.action?date=new Date()
加入new Date参数可以很大程度上让hibernate去更新一级缓存,但是一直不明白,这个原理是什么?经常遇到的情况是,不加new Date()参数,hibernate一级缓存(也就是session所管理的内置的缓存)得不到更新
详细的描述:(基于SSH的框架)
表A,视图B,视图B的数据来源于很多表,包括表A
当我对表A进行增删改查的时候,我单独去查询表A,很显然,这个时候一般不会出现session缓存问题,基本上是与数据库同步的,因为我的增删改查都是对session中缓存操作的,与数据库的同步,这个是由session处理(好像是可以人工干预的)
但是问题就出在查询视图B上,B中的数据,在数据库中查询,已经得到更新了,但是查询B时,所使用的session管理的缓存,并没能得到更新,这个时候,我查询的数据依然是历史数据,不是最新的,但是url中添加了new Date()参数后,这个问题得到了解决,浏览器是IE浏览器,我太明白为什么要添加这个参数,这个参数的原理又是什么?