浏览 1808 次
锁定老帖子 主题:声明式缓存,View层缓存讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-03
最后修改:2010-02-04
背景:由于理财专区二期的基金数据一天更新一次。并且都是非操作型数据。后台会将数据缓存起来。每日更新一次。上周的做法是在control层编码方式的添加缓存服务。今天尝试了通过在方法上定义@PageCache,达到的缓存。大家看看,给点意见。
实现方式:
调用流程:
文字说明: 代理对象坚持缓存是否命中,决定是否调用真正服务。
命中则直接return,在CacheJSONView中取出缓存的string,直接输出。 没命中则调用后返回ModelAndView,在CacheJSONView中输出后放入缓存。 这种方式的优势是直接在View层缓存。 入参实现PageCacheKey接口的getCacheKey方法, 通过CacheJSONView与代理的对象注入相同的cache服务,并通过cacheKey检查缓存。 劣势是需要添加CacheJSONView,并且访问路径是新增的*.cjson后缀。需要改动sm里面的东西 另外一个方案是, 不在View层缓存。在PageCacheAop中直接返回缓存后的对象。 这种方式优势是无须新增view,只需无须改动sm的东西。并且可以在sm原有的xml,json等方式输出。 劣势是每次返回的对象都会在各自的view中解析成对应协议的数据。如ModelAndView->JSONObject ->String. 大家发表一下意见。看看哪种方式更好。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-02-03
@PageCacheKey(value="****")
使用这样的方式表达会否更好? |
|
返回顶楼 | |
发表时间:2010-02-04
@PageCacheKey(value="****")
使用这样的方式表达会否更好? nothinkinperson 写道 @PageCacheKey(value="****")
使用这样的方式表达会否更好? 抱歉,文档我已经改过来了。不是@PageCacheKey是@PageCache。 两种做法我觉得没冲突。不过第二种不应该叫PageCache.所以新增了一种@MethodCache。 第一种方式@PageCache保留。 页面的缓存。其他同事提出还是在apache中通过url缓存。 不过apache url缓存有一些条件。需要按apache文档做相应的处理. |
|
返回顶楼 | |