使用Velocity生成静态页面减轻数据库压力提升网站性能
本文由发表于6年前 | J2EE | 评论数 1 |  被围观 9,192 views+

为减轻数据库服务器的访问压力,使用Velocity模板引擎为生成静态页面

在大型商务网站或门户网站中,网站的访问量一般很高,所以需要对网站的性能进行优化。其中数据库的瓶颈是阻止网站正常运行的最大问题所在。所以我们可以通过技术减少数据库的访问次数。

为此,可以使用静态页面技术。对于那些经常需要访问的页面,生成对于的静态页面。这样用户访问到的是静态页面时,不用访问数据库,大大的减少了数据库的压力。这里,我们使用Velocity模板引擎生成静态页面的方法为经常访问的页面生成静态页面。

准备项目环境

首先引入Velocity相关的JAR包,并在项目中适当的地方创建runtime.log和file.resource.loader.path需要用到的目录

详细的步骤见:Velocity模板引擎的介绍和基本的模板语言语法使用

初始化Velocity模板引擎

在项目初始化的同时初始化Velocity模板引擎,这里把初始化代码写在一个Filter的init方法中,并且动态生成Properties配置:

try{
	Properties prop = new Properties();
	prop.put("runtime.log", filterConfig.getServletContext().getRealPath("/WEB-INF/log/velocity.log"));
	prop.put("file.resource.loader.path", filterConfig.getServletContext().getRealPath("/WEB-INF/vm"));
	prop.put("input.encoding", "UTF-8");
	prop.put("output.encoding", "UTF-8");
	Velocity.init(prop);
}catch( Exception e ){
	e.printStackTrace();
}
在适当的处理方法中输出静态页面

这里因为在产品展示界面需要生成静态页面,所以在产品添加和修改的Action方法中添加生成静态页面的代码即可,生成的shtml文件保存在网站的根目录的html文件夹下:

File saveDir = new File(request.getSession().getServletContext()
		.getRealPath("WebRoot/html/product/"+product.getType().getTypeid()));
System.out.println(saveDir);
if(!saveDir.exists()) 
	saveDir.mkdirs();
VelocityContext context = new VelocityContext();
context.put("product", product);
Template template = Velocity.getTemplate("productview.html");
File output = new File(saveDir, product.getId()+".shtml");
FileOutputStream outStream = null;
OutputStreamWriter writer = null;
BufferedWriter sw = null;
try {
	outStream = new FileOutputStream(output);
	writer = new OutputStreamWriter(outStream,"UTF-8");
	sw = new BufferedWriter(writer);
	template.merge(context, sw);
	sw.flush();
} catch (Exception e) {
	e.printStackTrace();
} finally {			
	try {
		sw.close();
		outStream.close();
		writer.close();		
	} catch (Exception e) {
		e.printStackTrace();
	}				
}
替换原来的访问数据库链接

最后把原来查看产品展示界面的链接替换成静态页面的链接即可:

<a href="html/product/${product.type.typeid}/${product.id}.shtml">…</a>
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/use-velocity-to-generate-static-pages-to-reduce-the-pressure-to-enhance-site-performance-database.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/5
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    一条评论
  1. yeahs 2014年05月16日16:46:53  #-49楼 回复 回复

    您好!向您请教一下:
    我在登录后通过后台把相关登录人的信息放入session对象中。名字为sessionContent。然后通过springMVC里的重定向指向首页,可是刚重定向过去后首页并不认这些变量,只有刷新之后才认识得了,请问怎么会出现这种问题??如何解决???如果我描述得不够清晰,麻烦你加一下我的qq~~我再截图加文字描述给您听~~麻烦您了~~我的qq是:106819365

给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 JVM笔记 – 高效并发(Java内存模型与线程) 2015/3/1
2 java.util.concurrent整体结构图 2012/7/30
3 Android的Service基本编写方法 2011/7/12
4 Chrome插件开发 – UI外观 2013/6/4
5 Java笔记 – toString方法 无意识的递归 2013/12/13
6 源代码阅读方法 jQuery源码解析 核心模块core.js 2013/1/14
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.