生活中熟悉的天气预报信息为我们提供了及时的天气信息,给人们带来了很多的便利;从天气数据分析出来到人们看到这之间进行了大量的处理,一个网站显示的天气信息,需要访问服务器进行接口调用才能获取数据;再比如销售数据报表,报表的生成需要数据库花大量的时间进行计算;在Jsp中加入过多的类似这样复杂的信息会导致应用服务器、数据库服务器负荷过重,严重影响性能,甚至导致用户无法正常使用;好在JSP代码块缓冲技术为开发者提供解决方案。
网络配图 虽然JSP能够在标记库内封装和运行复杂的Java代码,使得JSP页面文件更容易维护,使得非专业开发人员使用JSP页面文件更加方便;现在已经有很多开放源代码的产品,但这些产品实现的功能比较简单,不能满足我们需求。方法总比困难多,OSCache标记库,为我们提供的新的思路。 OSCache标记库是由OpenSymphony设计的,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面内实现快速内存缓冲的功能;它不仅为所有用户缓冲现有JSP代码块,而且能够以用户为单位进行缓冲,OSCache还包含了一些提可伸缩性的高级特性,比如:缓冲到磁盘,可编程的缓冲刷新,异常控制等技术实现。 下面了解一下OSCache的工作过程,我们以一个团购网站为例进行说明,网站包括团购交易管理页面、团购类型导航条、各个商家团购数据显示等功能。
网络配图 1、管理功能需要监控交易的情况,数据库服务器需要进行分析计算才能出这样一个数据,没必要进行实时计算,需要间隔一定时间,为了避免管理员每次访问时都重新生成数据;为了实现这一点,我们可以将整个页面封装到一个应用级的缓冲标记之内,这个缓冲标记每隔1小时刷新一次。 代码示例: <%@ taglib uri="cachetags" prefix="cache" %> <cache:cache> .... 交易报表数据.... </cache:cache> 现在管理页面已经实现缓冲了,cache标记的默认缓冲时间是1小时;如果管理员在页面生成后的一个小时之内再次访问同一页面,他看到的将是以前缓存的页面,不需要由数据库服务器再次生成这个报表。 2、用户要求在左边导航条的下方显示购物车内容,显示出用户所购买商品的数量和商品价格。 我们利用会话级的缓冲技术实现这个功能功能; 代码示例: <cache:cache key="navbar" scope="session" time="500"> <% //获取及显示当前的商品价格信息 %> </cache:cache> OSCache库提供的flush标记能够刷新缓冲内容,代码如下: <cache:flush key="navbar" scope="session" /> 当用户下次访问它时,navbar缓冲块将被刷新。 3、商家团购数据显示,我们根据不同类型进行分别缓冲,而且各种类型的缓冲时间完全符合它们各自的信息变化频繁程度。 代码示例: <cache:cache time="600"> <% //查询数据库得到商家销售情况 int auctionCount = .... %> 本网站销售了商品<%=auctionCount%>个! </cache> 今天只是对OSCache有了一个简单的介绍,后续会对它的详细用法进行一一学习;我们只要知道它能帮开发者实现有更高性能的网站;我们能够用它解决一些影响网站响应时间的问题,比如访问量高峰期、数据库服务器负荷过重等。
网络配图 “条条道路通罗马”实现Web缓存不只有OSCache,我们需要根据自己的实际情况决定选择什么样的技术来实现;你的什么技术实现缓存,可以分享出来,大家一起学习哦。