背景:由于理财专区二期的基金数据一天更新一次。并且都是非操作型数据。后台会将数据缓存起来。每日更新一次。上周的做法是在control层编码方式的添加缓存服务。今天尝试了通过在方法上定义@PageCache,达到的缓存。大家看看,给点意见。
实现方式:
在需要缓存的方法上添加标注
@PageCache
public void queryFundList(InputArg arg){}
入参实现PageCacheKey接口。以便在ModelAndView中获得此次请求的cacheKey
class InputArg implements PageCacheKey{
public String getCacheKey();
}
PageCacheAop中,拦截@pageCache的请求
获得入参的cacheKey,检查cache是否命中
CacheJSONView中在ModelAndView中获得入参的cacheKey,取出缓存
调用流程:
文字说明:
页面请求a.cjson(新增一种CacheJSONView)
spring mvc controler调用代理过的服务,
代理对象坚持缓存是否命中,决定是否调用真正服务。
命中则直接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.
大家发表一下意见。看看哪种方式更好。
- 大小: 31.2 KB
分享到:
相关推荐
SmartImageView图片异步下载开源项目,升级版本,可以自动清除缓存 如项目中的设置,当缓存超过5M。自动清楚1M缓存,清楚的缓存按缓存文件创建时间最老的。 缓存清理均在线程中,所以程序开始的时候调用...
Chrome Cache View是一款专门用于查看和分析Chrome浏览器缓存的工具,它可以帮助用户提取并理解这些缓存记录。 在Chrome浏览器中,缓存主要分为两种类型:磁盘缓存和内存缓存。磁盘缓存存储在用户的本地文件系统中...
除了基本的开启缓存,还可以通过`shouldInterceptRequest(WebView view, WebResourceRequest request)`接口拦截请求,根据需要决定是否使用缓存。这个方法会在Webview试图加载资源时被调用。 六、清理缓存 在某些...
首先,我们来讨论一下常见的错误做法。一种常见的错误尝试是通过`v-if`和`v-else`来决定是否缓存组件: ```html <router-view /> <router-view /> ``` 这种做法实际上创建了两个独立的`<keep-alive>`组件,...
ASP.NET缓存技术是.NET框架下用于提升Web应用程序性能的关键特性。它允许开发者将常用数据存储在内存中,避免每次请求时都从数据库或其他慢速资源中获取数据,从而显著提高响应速度。本文将深入探讨ASP.NET缓存的...
它结合了MVP(Model-View-Presenter)架构模式、RxJava响应式编程库、Retrofit网络请求库以及Picasso图片加载库,构建了一个高效的数据缓存机制。 1. MVP架构模式:MVP是一种设计模式,将业务逻辑、界面展示和数据...
2. 触摸事件拦截:在WebView外部添加一层布局,拦截触摸事件,然后判断点击位置是否在图片上,如果在,则调用相应的处理方法。 ```java FrameLayout webViewContainer = new FrameLayout(this); webViewContainer....
ListView的缓存机制主要由两部分组成:View缓存(ViewHolder模式)和视图状态缓存(Recycling Mechanism)。 首先,我们来看**ViewHolder模式**。这个模式是为了减少在ListView滚动时频繁创建和销毁View对象而设计...
Vue中组件的缓存技术是Vue.js框架提供的一项重要功能,它允许开发者在组件之间切换时,保持之前组件的状态,而不需要重新渲染,这样可以提高应用的性能并改善用户体验。在实际开发过程中,我们经常需要在多个视图或...
【Android 清理缓存火箭动画Demo】是一个用于展示如何在Android应用中实现类似360清理缓存时出现的火箭升空动画效果的示例项目。这个Demo旨在帮助开发者理解如何结合动画与实际功能,比如清理缓存,来提升用户体验。...
而WebView的缓存机制则是提高用户体验、减少网络流量的关键技术之一。本文将详细讲解如何利用WebView实现在线视频播放,并探讨其缓存策略,以便实现离线阅读。 一、WebView基础 1. 初始化WebView:首先,我们需要...
4. **正确的缓存策略**:合理使用`setCacheCount()`和`setDrawingCacheEnabled()`方法,缓存View的位图,减少重新绘制的次数。然而,缓存过大可能会占用过多内存,因此需权衡性能与内存消耗。 5. **避免重叠绘制**...
2. **内存缓存与磁盘缓存**:SmartImageView内置了高效的缓存机制,包括内存缓存和磁盘缓存。当图片从网络加载时,首先会在内存中查找已缓存的图片,如果找不到,则从磁盘读取,再存入内存。这样的设计可以加快图片...
2. **自定义View**:可能需要创建一个自定义View或者扩展已有的View,以便添加清理缓存的动画逻辑。 3. **LayoutTransition**:布局过渡动画可以帮助在添加、删除或更改视图时产生平滑的动画效果。 4. **LiveData和...
在现代网络浏览环境中,缓存是提高网页加载速度的关键元素,而Chrome Cache View提供了深入洞察这一机制的途径。 首先,我们来详细了解一下什么是浏览器缓存。浏览器缓存是一种临时存储机制,它保存了用户访问过的...
本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本使用 1. 初始化WebView:首先,我们需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中找到该组件。...
4. **使用Open Session in View(OSIV)模式**:在Web开发中,为每个HTTP请求开启一个新的会话,可以避免跨请求的一级缓存污染问题,但也要注意防止会话泄漏。 压缩包文件“hibernate_cache_level1”可能包含与一级...
在Vue中,你可以将`keep-alive`包裹在`router-view`组件周围,以此来缓存路由切换时的组件实例。 ```html <router-view/> ``` 如果你希望只缓存特定的组件,你可以使用`include`属性列出组件的name,Vue将只...