如何应用OSCache缓存框架提高Web应用系统页面响应性能
suiw9 2024-11-13 14:44 22 浏览 0 评论
软件项目实训及课程设计指导——如何应用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应用系统的配置定义结果参看下面的状态
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
(2)而对JSP2.0版技术规范的Web应用系统,则不再需要在Web项目中添加上面的设置项目。因为在web.xml配置文件不再提供对<taglib>标签的支持参看如下示例图所示。
可能有读者会有疑问,如何知道自己的Web应用系统项目所依赖的JSP技术规范的版本?这可以在IDE开发工具(如MyEclipse开发工具)中通过帮助来获得Web应用系统项目所依赖的JSP技术规范的版本,因为此Web应用系统项目是由开发工具构建的。
7、在需要缓存的Web页面中添加对<taglib>标签库的引用
(1)对于JSP1.2版技术规范的Web应用系统需要添加如下的语句
<%@ taglib uri="oscache" prefix="cache" %>
(2)而对JSP2.0版技术规范的Web应用系统需要添加如下的语句,参看如下示例图所示
<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="cache" %>
(3)根据应用的要求添加OSCache缓存框架对应的标签,参看如下示例图中的应用示例
<cache:cache key="allTitleInfoList" refresh="false" scope="session">
页面中待缓存的动态数据(根据应用的需要添加)
</cache:cache>
8、测试OSCache缓存框架在本项目中缓存的页面应用效果
将Web示例项目部署到Web服务器,然后在浏览器中浏览测试页面,并输入查询条件,系统后台返回查询的结果信息(本Web示例项目中的测试数据都是模拟数据,参看如下示例图所示)。在浏览的过程中第一次访问需要等待一定时间,查询结果页面才显示出。但一旦查询结果页面显示完毕后,如果再次重复查询请求,查询结果页面迅速显示出,因为OSCache缓存框架会判断在缓存中的数据是否发生了变化,如果没有变化将不再会重复查询。
如何在Struts框架中应用FreeMarker模板技术实例
如何在Struts2框架中应用FreeMarker模板的实例
课程设计指导——应用AJAX技术提高Web应用的整体响应性能
相关推荐
- 5款Syslog集中系统日志常用工具对比推荐
-
一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...
- 跨平台、多数据库支持的开源数据库管理工具——DBeaver
-
简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...
- 强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)
-
NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...
- 3 年 Java 程序员还玩不转 MongoDB,网友:失望
-
一、什么场景使用MongoDB?...
- 拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南
-
作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...
- mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?
-
前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...
- solidworks使用心得,纯干货!建议大家收藏
-
SolidWorks常见问题...
- 统一规约-关乎数字化的真正实现(规范统一性)
-
尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...
- Elasticsearch节点角色配置详解(Node)
-
本篇文章将介绍如下内容:节点角色简介...
- 产前母婴用品分享 篇一:我的母婴购物清单及单品推荐
-
作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...
- 比任何人都光彩照人的假期!水润、紧致的肌肤护理程序
-
图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...
- Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型
-
中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...
- 柔性——面向大规模定制生产的数字化实现的基本特征
-
大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...
- 创建PLC内部标准——企业前进的道路
-
作者:FrankBurger...
- 标准化编程之 ----------- 西门子LPMLV30测试总结
-
PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
-
- 5款Syslog集中系统日志常用工具对比推荐
- 跨平台、多数据库支持的开源数据库管理工具——DBeaver
- 强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)
- 3 年 Java 程序员还玩不转 MongoDB,网友:失望
- 拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南
- mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?
- solidworks使用心得,纯干货!建议大家收藏
- 统一规约-关乎数字化的真正实现(规范统一性)
- Elasticsearch节点角色配置详解(Node)
- 产前母婴用品分享 篇一:我的母婴购物清单及单品推荐
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)