Web项目使用缓冲技术提高应用的稳定性及性能

生活中熟悉的天气预报信息为我们提供了及时的天气信息,给人们带来了很多的便利;从天气数据分析出来到人们看到这之间进行了大量的处理,一个网站显示的天气信息,需要访问服务器进行接口调用才能获取数据;再比如销售数据报表,报表的生成需要数据库花大量的时间进行计算;在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,我们需要根据自己的实际情况决定选择什么样的技术来实现;你的什么技术实现缓存,可以分享出来,大家一起学习哦。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ImportSource

微服务与API 网关(上): 为什么需要API网关?

本文是来自于Macro在一次大会上的一个分享。 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把...

7216
来自专栏用户2442861的专栏

taohui.org.cn建站历程

一直以来都在Qzone、CSDN等上面写博客,偶尔有些想法就在Paas平台上搭建服务,新浪和曾经的google上都用过其appengine。可是在别人的平台上...

2441
来自专栏python开发教学

Oracle与Sql server的区别 一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来

Oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

1133
来自专栏微服务

浅谈微服务基建的逻辑

这篇文章主要目的是面向初接触微服务的朋友简单介绍微服务基础建设所需要的各个模块以及缘由。 起点 首先,我们得有一个“服务”。根据定义,我们可以把每个服务实例都视...

39410
来自专栏Guangdong Qi

iOS APP版本构建版本无效

2203
来自专栏竹清助手

为什么选择PHP作为后台语言

越来越多的企业使用PHP+MYSQL搭建网站,究竟PHP有什么好,为什么要选择用PHP? 1. 跨平台,性能优越,跟Linux/Unix结合别跟Windo...

1393
来自专栏沈唁志

GitHub代码托管平台提交代码时emoji表情的使用

1994
来自专栏CSDN技术头条

Linux的赌注:总有一个发行版适合你

作者简介:Steven J. Vaughan-Nichols,自1993年(Linux问世两年之后)开始使用Linux,尝试过数十个不同的发行版,运营网站Des...

23610
来自专栏移动端开发

iOS 即时通讯 + 仿微信聊天框架 + 源码

更新:2017年8月1日 实在是抱歉,git上的Demo这么久,有问题自己没有发现!肯定给大家造成过不方便,抱歉!git上Demo刚重新上传,要有需要的可以去...

8875
来自专栏杨建荣的学习笔记

脚本改进的一点体会(r12笔记第60天)

一直以来我们想要推进内部的自动化系统,但是总是会遇到各种各样具体的问题,有时候我们准备好了,但是总是会有一些因素的干扰,再加上工作时间的安排,有些事情就一...

3459

扫码关注云+社区