一种基于注解描述的Web缓存方法

文档序号:9380466阅读:190来源:国知局
一种基于注解描述的Web缓存方法
【技术领域】
[0001]本发明属于互联网应用领域,具体涉及一种基于注解描述的Web缓存方法。
【背景技术】
[0002]缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
[0003]API为操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。现有方案采用一般API方式实现缓存,即由开发者显式调用缓存API,通常包括以下两类API:
l、set/get方法直接操作缓存。即通过getCache (String cacheName)获取缓存对象。setCache (String cacheName, String cacheValue)设置缓存对象。
[0004]2、从数据库中获取数据时,首先从缓存获取。如queryByCache (StringcacheName, String sql),该方法首先获取cacheName对应的缓存对象,当缓存对象为null时,再执行sql语句并把查询结果缓存在cacheName对应的缓存对象中。
[0005]方案I米用的是set/get方法,需要程序员主动管理cache,并在任何需要获取cache的代码中,硬编码get方法获取cache的值,而当cache为null时,程序员则必须SetCache0这些操作还涉及到多线程同步,编码易出错导致脏数据。
[0006]方案2较方案I使用更为便利,但该方案的缓存数据无法更新,一旦用户通过管理界面修改了 sql查询对应的数据库表后,获取的数据仍为最初查询的缓存数据结果,而不会重新发起sql查询。

【发明内容】

[0007]本发明的目的是提供一个简单的基于“注解(Annotat1n) ”式描述的缓存方法,简化程序员编码及缓存管理难度,并确保自动刷新缓存。
[0008]本发明采用以下技术方案实现:一种基于注解描述的Web缓存方法,其特征在于:包括以下步骤:步骤S1:用户浏览器发起HTTP请求,对应于查询方法上的缓存操作注解,该请求首先被缓存拦截器拦截;步骤S2:缓存拦截器发现从未缓存过该Controller方法及相关参数上的数据,则将该Controller方法及相关参数发往控制器对象处理;步骤S3:控制器对象执行各种数据库查询操作,获取生成视图所需要的所有数据,数据库将该数据返回给控制器;步骤S4:控制器调用缓存方法,保存生成视图所需要的所有数据;控制器将数据发送给视图;步骤S5:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示;步骤S6:当其他用户浏览器发来同样的HTTP请求,访问已写入过缓存的Controller方法时,该请求首先被缓存拦截器;步骤S7:缓存拦截器向缓存服务器Memcached中的请求缓存数据;步骤S8 =Memcached将缓存数据发送回缓存拦截器拦截;缓存拦截器将查询结果返回给用户浏览器;步骤S9:用户浏览器发起HTTP请求,对应于增删改方法上的清除缓存操作注解,该请求首先被清除缓存拦截器拦截;步骤SlO:清除缓存拦截器将该Controller方法及相关参数发往控制器对象处理;步骤Sll:控制器对象执行各种数据库增删改操作,并获取生成视图所需要的所有数据;数据库将增删改数据的结果返回给控制器;步骤S12:控制器调用缓存方法,清除视图需要的所有相关数据;控制器将数据发送给视图;步骤S13:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示。
[0009]在本发明一实施例中,当包含INSERT、UPDATE或DELETE操作的方法,设置为清除缓存操作清除该控制器的所有缓存数据;若只包含SELECT数据库表操作的方法,则设置为缓存操作生成缓存数据。
[0010]与现有技术相比本发明具有以下优点:
1、不使用JavaAPI编程操作,避免程序员操作错误。用户无需考虑把什么对象缓存在哪个cacheName中,读取缓存和清除缓存操作分别使用不同的拦截器配置,不带有任何参数,大大简化了程序员的工作量;
2、该方法支持多缓存服务器的群集配置,且当缓存服务器宕机下线时,或者缓存服务器重新上线时,缓存插件将自动适配,自动调整缓存分配,确保缓存的命中率达到预期。
【附图说明】
[0011]
图1为HTTP请求Controller的查询方法时的流程示意图。
[0012]图2为HTTP请求Controller的增、删、改方法时的流程示意图。
【具体实施方式】
[0013]下面结合附图和【具体实施方式】对本发明做进一步说明。
[0014]一种基于注解描述的Web缓存方法,其特征在于:包括以下步骤:步骤S1:用户浏览器发起HTTP请求,对应于查询方法上的缓存操作注解,该请求首先被缓存拦截器拦截;步骤S2:缓存拦截器发现从未缓存过该Controller方法及相关参数上的数据,则将该Controller方法及相关参数发往控制器对象处理;步骤S3:控制器对象执行各种数据库查询操作,获取生成视图所需要的所有数据,数据库将该数据返回给控制器;步骤S4:控制器调用缓存方法,保存生成视图所需要的所有数据;控制器将数据发送给视图;步骤S5:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示;步骤S6:当其他用户浏览器发来同样的HTTP请求,访问已写入过缓存的Controller方法时,该请求首先被缓存拦截器;步骤S7:缓存拦截器向缓存服务器Memcached中的请求缓存数据;步骤S8:Memcached将缓存数据发送回缓存拦截器拦截;缓存拦截器将查询结果返回给用户浏览器;步骤S9:用户浏览器发起HTTP请求,对应于增删改方法上的清除缓存操作注解,该请求首先被清除缓存拦截器拦截;步骤SlO:清除缓存拦截器将该Controller方法及相关参数发往控制器对象处理;步骤Sll:控制器对象执行各种数据库增删改操作,并获取生成视图所需要的所有数据;数据库将增删改数据的结果返回给控制器;步骤S12:控制器调用缓存方法,清除视图需要的所有相关数据;控制器将数据发送给视图;步骤S13:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示。
[0015]HTTP请求ControIIer的查询方法时的流程参见图1,HTTP请求ControIIer的增、删、改方法时的流程参见图2。
[0016]具体的,当包含INSERT、UPDATE或DELETE操作的方法,设置为OBefore (Evictlnterceptor.class)(清除缓存操作)清除该控制器的所有缓存数据;若只包含SELECT数据库表操作的方法,则设置为OCacheInterc印tor.class)(缓存操作)生成缓存数据。
[0017]综上所述,本发明提供的上列较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于注解描述的Web缓存方法,其特征在于:包括以下步骤: 步骤S1:用户浏览器发起HTTP请求,对应于查询方法上的缓存操作注解,该请求首先被缓存拦截器拦截; 步骤S2:缓存拦截器发现从未缓存过该Controller方法及相关参数上的数据,则将该Controller方法及相关参数发往控制器对象处理; 步骤S3:控制器对象执行各种数据库查询操作,获取生成视图所需要的所有数据,数据库将该数据返回给控制器; 步骤S4:控制器调用缓存方法,保存生成视图所需要的所有数据;控制器将数据发送给视图; 步骤S5:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示;步骤S6:当其他用户浏览器发来同样的HTTP请求,访问已写入过缓存的Controller方法时,该请求首先被缓存拦截器; 步骤S7:缓存拦截器向缓存服务器Memcached中的请求缓存数据; 步骤S8 =Memcached将缓存数据发送回缓存拦截器拦截;缓存拦截器将查询结果返回给用户浏览器; 步骤S9:用户浏览器发起HTTP请求,对应于增删改方法上的清除缓存操作注解,该请求首先被清除缓存拦截器拦截; 步骤SlO:清除缓存拦截器将该Controller方法及相关参数发往控制器对象处理;步骤Sll:控制器对象执行各种数据库增删改操作,并获取生成视图所需要的所有数据;数据库将增删改数据的结果返回给控制器; 步骤S12:控制器调用缓存方法,清除视图需要的所有相关数据;控制器将数据发送给视图; 步骤S13:视图将获得数据渲染成为最终的HTML页面,并发送至用户浏览器进行显示。2.根据权利要求1所述的基于注解描述的Web缓存方法,其特征在于:当包含INSERT、UPDATE或DELETE操作的方法,设置为清除缓存操作清除该控制器的所有缓存数据;若只包含SELECT数据库表操作的方法,则设置为缓存操作生成缓存数据。
【专利摘要】本发明的目的是提供一种基于注解描述的Web缓存方法,在控制器类(Controller)中,通过Before(CacheInterceptor.class)设置本方法的数据需要缓存。通过Before(EvictInterceptor.class)设置本方法将清除本控制器设置的缓存。该方法不使用Java?API编程操作,避免程序员操作错误。用户无需考虑把什么对象缓存在哪个cacheName中,读取缓存和清除缓存操作分别使用不同的拦截器配置,不带有任何参数,大大简化了程序员的工作量;该方法支持多缓存服务器的群集配置,且当缓存服务器宕机下线时,或者缓存服务器重新上线时,缓存插件将自动适配,自动调整缓存分配,确保缓存的命中率达到预期。
【IPC分类】H04L29/08
【公开号】CN105100289
【申请号】CN201510611279
【发明人】蔡晓东
【申请人】中邮科通信技术股份有限公司
【公开日】2015年11月25日
【申请日】2015年9月24日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1