用缓冲技术提高JSP程序的性能和稳定性

机床2020年06月18日

三、主页

拍卖站的主页显示站活动情况,宣传那些即将结束的拍卖活动。我们希望显示出正在进行的拍卖活动数量,当前登录用户数量,在短期内就要结束的拍卖活动的清单,以及当前时间。这些信息有着不同的时间精确度要求。站上的拍卖活动通常持续数天,因此我们可以把缓冲有效拍卖活动数量的时间定为6个小时。用户数量的变化显然要频繁一些,但这里我们将把这个数值每次缓冲15分钟。最后,我们希望页面中显示的当前时间总是精确的页面访问时间。

在主页中声明标记库之后,我们首先以不带缓冲的方式直接输出当前日期:

现在是:<%=te()%>

接下来,我们要显示一个清单,列出那些将在短期内结束的拍卖活动:

<cache:cache><ul><%//构造一个包含最近拍卖活动的IteratorIteratorauctions=....while(sMore()){Auctionauction=(Auction)xt();%><li><%=auction%></li%<}%></ul></cache:cache>

最后,我们希望显示出正在进行的拍卖活动的数量,这个数字需要缓冲6小时。由于cache标记需要的是缓冲数据的秒数,我们把6小时转换成21600秒:

<cache:cachetime="21600"><%//查询数据库得到拍卖活动总数intauctionCount=....%>本站正在进行的拍卖活动有<%=auctionCount%>个!</cache>

可以看到,我们只用少量的代码就构造出了一个带有复杂缓冲系统的主页。这个缓冲系统对页面各个部分分别进行缓冲,而且各个部分的缓冲时间完全符合它们各自的信息变化频繁程度。由于有了缓冲,现在我们可以在主页中放入更多的内容;而在以前没有缓冲的情况下,主页中放入过多的内容会导致页面访问速度变慢,甚至可能给数据库服务器带来过重的负载。

四、导航条

假设在规划站的时候,我们决定在左边导航条的下方显示购物车内容。我们将显示出用户所拍卖的每一种商品的出价次数和当前报价,以及所有那些当前用户出价最高的商品的清单。

我们利用会话级的缓冲能力在导航条中构造上述功能。把下面的代码放入模板或者包含文件,以便站中的其他页面引用这个导航条:

<cache:cachekey="navbar"scope="session"time="300"><%//提取并显示当前的出价信息%></cache:cache>

在这里我们引入了两个重要的属性,即key和scope。在本文前面的代码中,由于cache标记能够自动为代码块创建唯一的key,所以我们不需要手工设置这个key属性。但在这里,我们想要从站的其余部分引用这个被缓冲的代码块,因此我们显式定义了该cache标记的key属性。第二,scope属性用来告诉cache标记当前代码块必须以用户为单位缓冲,而不是为所有用户缓冲一次。

在使用会话级缓冲时应该非常小心,应该清楚:虽然我们可以让复杂的导航条减少5倍或10倍的服务器负载,但它将极大地增加每个会话所需要的内存空间。在CPU能力方面增加可能的并发用户数量无疑很理想,但是,一旦在内存支持能力方面让并发用户数量降低到了CPU的限制之下,这个方案就不再理想盘中一度冲高至89.516。

正如本文前面所提到的,我们希望从站的其余部分引用这个缓冲的代码块。这是因为,当一个用户增加了一个供拍卖的商品、或者出价竞购其他用户拍卖的商品时,我们希望刷新缓冲,使得导航条下一次被读取时具有最新的内容。虽然这些数据可能因为其他用户的活动而改变,但如果用户在站上执行某个动作之后看到自己的清单仍未改变,他可能会感到非常困惑。

OSCache库提供的flush标记能够刷新缓冲内容。我们可以把下面的代码加入到处理用户动作且可能影响这一区域的页面之中:

<cache:flushkey="navbar"scope="session"/>

当用户下次访问它时boss之家8641《龙纹战域》真心爽爆,navbar缓冲块将被刷新。

至此为止,我们这个示例站的构造工作已经完成且可以开始运行。下面我们来看看OSCache的异常处理能力。即使缓冲的内容已经作废,比如在缓冲块内出现了Java异常,OSCache标记库仍旧允许我们用编程的方法显示这些内容。有了这种异常控制功能,我们可以拆除数据库服务器和Web服务器之间的连接,而站仍能够继续运行。JSP1.2规范引入了TryCatchFinally接口,这个接口允许标记本身检测和处理Java异常。因此,标记可以结合这种异常处理代码,使得JSP页面更简单、更富有条理。

OpenSymphony正在计划实现其他的缓冲机制以及一个可管理性更好的主系统,它将使我们能够对缓冲使用的RAM和磁盘空间进行管理。一旦有了这些功能,我们就能够进一步提高站的响应速度和可靠性。

【结束语】

OSCache能够帮助我们构造出更丰富多彩、具有更高性能的站。有了OSCache标记库的帮助,现在我们能够用它解决一些影响站响应能力的问题,比如访问量高峰期、数据库服务器负荷过重等。查看本文来源

郴州白癜风医院
冠心病的用药原则
珠海哪家医院治疗白癜风
相关阅读
爱你是我的自由,就让你是我的感觉

往昔里你曾激浪勇进,不曾管天是晴割,幻想要若破灭随之粗犷,风卷浪花水...

2024-09-03
优化进返京政策主要采取哪些举措?北京疾控回应

央视网消息:7月6日凌晨,北京闭幕“新冠肺炎疫情根除工作”第379场新闻开...

2024-09-01
苹果VR/AR头盔曝光 传了10年的死讯终于要实现了吗?

【CNMO新闻网】自2019年风生水起的VR/AR概念,到2021年大热的“元时空”。三巨...

2024-08-25
【深度盘点】磷电池应用场景及工程案例

2022年以来,锂锂电池跨国企业频频亮相,不仅有的产品刊发会,也有新成立...

2024-08-19
消息称惠普将上架战X 2022 14 英寸锐龙版:搭载 R7 6800HS

IT之家 5 月 22 日消息,据IT之家Gmail“chengxd”独家壹周刊,科技公司将发行正...

2024-08-11
华东理工大学刘润辉教授在治疗侵入性耐药真菌感染研究获进展

近来,经济系材料学院刘润辉大学教授课题组在抗击波及特质致病真菌感染研...

2024-08-06
友情链接