解析缓冲技术在JSP编程中新的运用
解析缓冲技术在JSP编程中新的运用
一、概述
在Web运用中,有些报表的生成能够需求数据库花很长工夫能力计算进去;有的网站提供天气信息,它需求访问远程服务器停止SOAP调用能力失去温度信息。一切这所有都属于简单信息的例子。在Web页面中退出过多的简单信息能够导致Web服务器、数据库服务器负荷过重。jsp(SUN企业级运用的首选)(SUN企业级运用的首选)代码块缓冲为开发者带来了轻易地添加各种简单信息的自由。
jsp(SUN企业级运用的首选)(SUN企业级运用的首选)可以在标记库内封装和运转简单的Java代码,它使得jsp(SUN企业级运用的首选)(SUN企业级运用的首选)页面文件更容易维护,使得非业余开发人员利用jsp(SUN企业级运用的首选)(SUN企业级运用的首选)页面文件愈加方便。如今已经有许多标记库,它们或许是商业产品,或许是源代码开放产品。但这些产品中的大少数都只是用标记库的方式完老本来可能用一个简略的Java Scriptlet完成的性能,很少有产品以某种创造性的模式利用定制标记,提供在出现jsp(SUN企业级运用的首选)(SUN企业级运用的首选)定制标记库之前几乎不能够完成的用法。
OSCache标记库由OpenSymphony设计,它是一种创始性的jsp(SUN企业级运用的首选)(SUN企业级运用的首选)定制标记运用,提供了在现有jsp(SUN企业级运用的首选)(SUN企业级运用的首选)页面之内完成快速内存缓冲的性能。只管已经有一些供应商在提供各种方式的缓存产品,然而,它们都属于面向特定供应商的产品。OSCache可以在任何jsp(SUN企业级运用的首选)(SUN企业级运用的首选) 1.1兼容的服务器上运转,它不只可以为一切用户缓冲现有jsp(SUN企业级运用的首选)(SUN企业级运用的首选)代码块,而且可以以用户为单位停止缓冲。OSCache还蕴含一些提高可伸缩性的高级特性,比如:缓冲到磁盘,可编程的缓冲刷新,同样控制,等等。另外,正如OpenSymphony的其余产品,OSCache的代码也在一个开放源代码答应协定之下免费发行。
本文以一个假想的拍卖网站设计过程为例,引见OSCache的工作过程。这个假想的Web网站将蕴含:一个报告最近拍卖流动的治理页面;一个性能残缺、带有各种宣传信息的主页;一个特殊的导航条,它蕴含了用户一切尚未成交的拍卖流动信息。
二、治理页面
拍卖网站蕴含一个治理报表,数据库服务器需求数秒工夫能力创建这样一个报表。报表生成工夫长这一点很重要,由于咱们能够让多个治理员监督系统运转情况,同时又想避免治理员每次访问时都重重生成这个报表。为了完成这一点,咱们将把整个页面封装到一个运用级的缓冲标记之内,这个缓冲标记每隔1小时刷新。其余供应商提供的一些产品也具备类似的性能,只是OSCache比它们做得更好。
为简略计,咱们将不过多地关注格式成绩。在编写治理页面时,咱们首先把标记库申明退出到页面:
<%@ taglib uri="cachetags" prefix="cache" %>
接上去咱们要用cache标记来解围整个页面。cache标记的默许缓冲工夫是1小时。
<cache:cache> .... 简单的治理报表 .... </cache:cache>
如今治理页面已经被缓冲。假设治理员在页面熟成后的一个小时之内再次访问同一页面,他看到的将是以前缓存的页面,不需求由数据库服务器再次生成这个报表。
三、主页
拍卖网站的主页显示网站流动情况,宣传那些即将完结的拍卖流动。咱们宿愿显示出正在停止的拍卖流动数量,以后登录用户数量,在短期内就要完结的拍卖流动的清单,以及以后工夫。这些信息有着不同的工夫精确度要求。网站上的拍卖流动通常继续数天,因此咱们可能把缓冲有效拍卖流动数量的工夫定为6个小时。用户数量的变化显然要频繁一些,但这里咱们将把这个数值每次缓冲15分钟。最后,咱们宿愿页面中显示的以后工夫总是精确的页面访问工夫。
在主页中申明标记库之后,咱们首先以不带缓冲的模式间接输出以后日期:
如今是:<%=new java.util.Date()%>
接上去,咱们要显示一个清单,列出那些将在短期内完结的拍卖流动:
<cache:cache> <ul> <% // 结构一个蕴含最近拍卖流动的Iterator Iterator auctions = .... while (auctions.hasMore()) { Auction auction = (Auction)auctions.next(); %><li><%=auction%></li%< } %> </ul> </cache:cache>