首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

课程设计指导——如何应用OSCache缓存框架提高Web页面响应性能

软件项目实训及课程设计指导——如何应用OSCache缓存框架提高Web页面响应性能

1、缓存应用技术是提高软件应用系统性能的最简单和最有效的方式之一

在计算机的软硬件系统中大量地应用缓存(Cache)技术,所谓“缓存”是指位于“目标”(可以为软件类的应用系统,也可以为硬件设备或者部件)和“源”( 一般为数据源)之间,其目的是为了匹配“目标”和“源”之间由于数据传输速度的差异,或者为了减少“目标”对物理数据源频繁访问的次数等应用要求,从而提高“目标”所属的软硬件系统的运行性能。

比如,大家经常使用的Web浏览器中就应用了缓存技术,Web浏览器通过应用缓存可以缩短Web网页请求资源的频次(比如对当前Web页面的重复刷新),减少延迟。并且由于存储在缓存(缓存的介质一般是内存)中的文件可以重复使用,因此Web浏览器,通过应用缓存还可以减少网络带宽,从而降低网络负荷。

在Java应用程序开发实现和J2EE Web应用系统的设计和开发实现中,软件应用系统的设计和开发实现人员可以在系统的表示层和系统的持久层中充分地应用缓存机制和相应实现技术能够大大地提高Web应用系统的访问性能。

比如数据库连接池、多线程应用中的线程池、对象复用池以及各种应用框架中的缓存插件,如Hibernate框架中常使用的二级缓存插件EHCache,分布式应用环境中的高速缓存系统MemCache,基于key-value(键/值对)远程字典服务的Redis以弥补MemCache等系统在key-value形式的存储应用中的不足。

如下示例图为EHCache缓存框架的官方网站页面局部截图,读者如果在项目开发中需要应用EHCache缓存框架,可以在官方网站中下载相关的系统库文件,或者浏览相关的技术参考文档资料。

当然,在应用缓存机制时一定要将软件应用系统中不经常改动但又需要频繁访问的数据加以缓存。比如在Web应用系统开发中,可以将BBS论坛系统中的分类信息、新闻系统中的新闻信息、网上商城中的商品信息等进行缓存。作者在下文中为读者介绍如何应用开源的OSCache缓存框架以提高J2EE  Web应用系统的响应性能。

2、应用开源的OSCache缓存框架以提高Web应用系统的响应性能

OSCache是OpenSymphony组织提供的一个基于J2EE架构的Web应用系统中的表示层和应用层的缓存技术支持的J2EE缓存框架。下图所示的示例图为OSCache框架的官方网站页面。

但由于OpenSymphony的官方网站已经在2010年11月份就已经关闭了,读者如果现在项目开发中还需要应用OSCache缓存框架,可以通过国内的系统平台进行下载。可能是由于OSCache缓存框架当时很流行的原因吧,国内许多系统平台都提供了OSCache缓存框架的系统库文件供开发人员下载。作者在下文中给读者推荐一个国内下载平台,参看如下示例图所示。

尽管OSCache缓存框架也可以缓存普通的Java类对象,但开发人员一般都将它应用于J2EE Web表示层中实现Web页面内容的缓存。因此,在J2EE Web应用系统项目的表示层开发中通过应用OSCache缓存框架,开发人员不但可以实现通常的缓存功能,还能够改善J2EE Web应用系统的稳定性和减轻对Web服务器的负担、并减少对数据库表中的数据IO访问的性能开销。

3、开源OSCache缓存框架的主要技术特性

(1)能够兼容多种不同形式的J2EE  Servlet容器

开源OSCache缓存框架目前能够支持各种主流的商业和开源的J2EE Servlet容器——包括BEA Weblogic(现在改为Oracle Weblogic)、IBM Websphere 和Tomcat等,其它支持J2EE Servlet2.3、JSP1.2版本的Web服务器应该都是完全兼容OSCache缓存框架系统的。

(2)可选的缓存区定义配置

   Web应用系统的开发人员在具体应用OSCache缓存框架时,可以使用内存、硬盘空间或者同时使用内存和硬盘实现缓存。但使用内存作为缓存区将可以提供更好的性能、速度更快,而使用硬盘作为缓存区可以在Web服务器重启动后迅速恢复所缓存的数据内容;当然也允许Web应用系统的开发人员提供自己的其它资源(但需要自己提供适配器)作为缓存区。

(3)灵活的缓存系统的实现并提供不同形式和级别的缓存实现

OSCache缓存框架不仅可以实现Web页面级(整个Web页面)的响应内容缓存,也可以对Web页面中的部分内容进行缓存,这完全由开发者在具体应用时根据待开发的应用项目不同的需求、不同的环境选择不同的缓存级别;而缓存的内容可以为任何对象,比如可以缓存Web页面或HTTP请求、Java类的对象实例等。

(4)还提供功能丰富的系统类库API

OSCache缓存框架通过提供丰富的系统类库API,从而允许Web应用系统的开发人员通过编程的方式来控制和管理OSCache缓存框架的功能实现。通过应用OSCache缓存框架,能够提高应用系统的容错能力——因为在一般的Web应用系统中,Web页面中的动态数据基本上都来自于后台的数据库表。而如果某次请求响应时的数据库访问中出现了错误,那么用户将看到系统所提示的各种错误信息。

但如果此时Web应用系统的表示层组件中应用了OSCache缓存框架技术实现了Web页面缓存,那么OSCache缓存框架就可以使用缓存中的Web页面内容作为响应输出,从而减少了产生错误信息的次数,相应地也就提高了应用系统的容错能力。

4、在Web项目中添加OSCache缓存框架的系统包文件

OSCache缓存框架相关的系统库文件主要为oscache-2.3.2.jar和commons-logging.jar两个文件,而对于Apache 提供的日志处理系统commons-logging.jar文件如果在项目中已经在前面加入过,则在此可以不再需要重复添加。操作过程的示例图如下所示。

oscache-2.3.2.jar系统库文件添加完毕后的最后结果状态,可以参考如下示例图所示。

5、将oscache.properties、oscache.tld文件放入WEB-INF\class目录中

在OSCache缓存框架所提供的系统包包含有oscache.properties、oscache.tld这两个示例文件,其中的oscache.properties文件主要提供对OSCache缓存框架的缓存策略定义,开发人员可以根据项目的缓存需要修改其中相关的配置项目从而可以改变缓存策略以满足项目的特殊需要;而oscache.tld文件则为OSCache缓存框架的标签库定义文件,开发人员不需要修改,只需要简单地拷贝到自己的Web项目中。

因此,开发人员需要将这两个文件导入到Web项目中的WEB-INF\class目录中。操作过程的示例图如下所示。

oscache.properties、oscache.tld这两个示例文件导入完毕后的最后结果状态,可以参考如下示例图所示。

6、在Web项目中增加对OSCache缓存框架所提供的标签库的支持

根据J2EE JSP技术规范要求,如果在Web页面中需要应用第三方的标签库(taglib),需要在Web应用项目中的web.xml部署描述文件内添加相关的配置项目以实现对标签库(taglib)的技术支持。

因此,需要修改Web应用项目中的web.xml文件以填加下面的配置项目内容,增加对OSCache缓存框架提供的标签库(taglib)的技术支持。

(1)对于JSP1.2版技术规范的Web应用系统的配置定义结果参看下面的状态

(2)而对JSP2.0版技术规范的Web应用系统,则不再需要在Web项目中添加上面的设置项目。因为在web.xml配置文件不再提供对标签的支持参看如下示例图所示。

可能有读者会有疑问,如何知道自己的Web应用系统项目所依赖的JSP技术规范的版本?这可以在IDE开发工具(如MyEclipse开发工具)中通过帮助来获得Web应用系统项目所依赖的JSP技术规范的版本,因为此Web应用系统项目是由开发工具构建的。

7、在需要缓存的Web页面中添加对标签库的引用

(1)对于JSP1.2版技术规范的Web应用系统需要添加如下的语句

(2)而对JSP2.0版技术规范的Web应用系统需要添加如下的语句,参看如下示例图所示

(3)根据应用的要求添加OSCache缓存框架对应的标签,参看如下示例图中的应用示例

页面中待缓存的动态数据(根据项目的应用需要添加)

8、测试OSCache缓存框架在本项目中缓存的页面应用效果

将Web示例项目部署到Web服务器,然后在浏览器中浏览测试页面,并输入查询条件,系统后台返回查询的结果信息(本Web示例项目中的测试数据都是模拟数据,参看如下示例图所示)。在浏览的过程中第一次访问需要等待一定时间,查询结果页面才显示出。但一旦查询结果页面显示完毕后,如果再次重复查询请求,查询结果页面迅速显示出,因为OSCache缓存框架会判断在缓存中的数据是否发生了变化,如果没有变化将不再会重复查询。

如何在Struts2框架中应用FreeMarker模板技术的实例

如何在Struts框架中应用FreeMarker模板技术的应用实例

如何应用Web页面静态化技术以提高J2EE Web应用系统的响应性能

如何应用XML+XSLT+AJAX组合技术实现无刷新的数据查询应用实例

软件项目实训指导——应用AJAX技术提高Web应用系统的整体响应性能

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201222A0693F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券