Velocity模板引擎的缓冲机制
2008-12-07 12:00
295 查看
Velocity中提供的模板缓冲机制能够大大地提升系统的性能,开启缓冲功能,系统无需每次都重新加载和解析Velocity模板文件。
那么在什么情况下需要开启缓冲机制,什么情况下不需要开启缓冲机制呢,下面就来分析一下。
一般如果模板文件修改的比较频繁的不宜屏蔽缓冲机制:开发环境下,程序员随时都可能修改模板文件的内容,不宜开启缓冲机制。
在最终部署的系统中可以开启模板缓冲机制,这种情况下基本上不会修改模板内容,修改后一般都要重新部署系统。
下面举一个实际系统的例子来分析一下:
系统部署环境:aix+weblogic,系统通过Velocity模板引擎来构建BS系统的主题框架。
目前生产环境、培训环境中Velocity 模板引擎加载模板文件的模式为实时加载模式,这种模式对BS系统的性能存在比较大的影响,在系统大并发量访问的情况下,weblogic后台会抛出类似以下的异常:
java.io.FileNotFoundException:xxxx.vm (Too many open files)
抛出上述异常的原因有:
unix或者linux下设置的open files的数量过小
系统没有开启Velocity的模板缓冲机制,导致用户访问时频繁地加载和解析Velocity模板文件,间接造成频繁地打开模板文件。
因此,需要将Velocity模板文件的加载方式改为缓冲加载模式,可以大大地提升BS系统的性能。
这是因为BS系统框架的生成直接依赖于Velocity模板文件,如果采用实时加载Velocity模板文件的模式,在访问系统中某个菜单模块时就会去读取并加载Velocity模板文件,这个过程的开销是比较大的;配置为缓冲模式后,所有的Velocity模板文件只加载一次即第一次访问时加载,后续操作全部从模板缓冲器中获取Velocity模板的内容,这样就不会每次都去实时加载Velocity模板文件,大大地提升了系统的性能,而且Velocity模板文件一旦被部署后就不会被改变,就不存在刷新缓冲的问题。
/WebRoot/WEB-INF/classes/velocity.properties
修改内容:
file.resource.loader.cache = true #启用模板文件缓冲机制
file.resource.loader.modificationCheckInterval = -1 #屏蔽模板文件修改检测机制
修改配置后需要重启应用。
那么在什么情况下需要开启缓冲机制,什么情况下不需要开启缓冲机制呢,下面就来分析一下。
一般如果模板文件修改的比较频繁的不宜屏蔽缓冲机制:开发环境下,程序员随时都可能修改模板文件的内容,不宜开启缓冲机制。
在最终部署的系统中可以开启模板缓冲机制,这种情况下基本上不会修改模板内容,修改后一般都要重新部署系统。
下面举一个实际系统的例子来分析一下:
系统部署环境:aix+weblogic,系统通过Velocity模板引擎来构建BS系统的主题框架。
目前生产环境、培训环境中Velocity 模板引擎加载模板文件的模式为实时加载模式,这种模式对BS系统的性能存在比较大的影响,在系统大并发量访问的情况下,weblogic后台会抛出类似以下的异常:
java.io.FileNotFoundException:xxxx.vm (Too many open files)
抛出上述异常的原因有:
unix或者linux下设置的open files的数量过小
系统没有开启Velocity的模板缓冲机制,导致用户访问时频繁地加载和解析Velocity模板文件,间接造成频繁地打开模板文件。
因此,需要将Velocity模板文件的加载方式改为缓冲加载模式,可以大大地提升BS系统的性能。
这是因为BS系统框架的生成直接依赖于Velocity模板文件,如果采用实时加载Velocity模板文件的模式,在访问系统中某个菜单模块时就会去读取并加载Velocity模板文件,这个过程的开销是比较大的;配置为缓冲模式后,所有的Velocity模板文件只加载一次即第一次访问时加载,后续操作全部从模板缓冲器中获取Velocity模板的内容,这样就不会每次都去实时加载Velocity模板文件,大大地提升了系统的性能,而且Velocity模板文件一旦被部署后就不会被改变,就不存在刷新缓冲的问题。
需要修改的配置文件和内容
配置文件:/WebRoot/WEB-INF/classes/velocity.properties
修改内容:
file.resource.loader.cache = true #启用模板文件缓冲机制
file.resource.loader.modificationCheckInterval = -1 #屏蔽模板文件修改检测机制
修改配置后需要重启应用。
相关文章推荐
- 如何在web项目中引用velocity模板引擎?
- 基于Velocity开发自己的模板引擎
- 从PHP的模板引擎看Discuz!模板机制
- Velocity模板引擎
- Velocity模板引擎
- Velocity模板引擎下 velocity.properties转义(转码)配置
- ASP.NET中的模板引擎Nvelocity简单示例
- velocity(vm)模板引擎学习介绍及语法
- 【Velocity模板引擎】前端页面#if...#elseif...#end语句用法
- NVelocity是Java模板引擎Velocity的.Net版本
- Velocity模板引擎之旅(1)
- Java的模板引擎Velocity初体验
- (二)模板引擎之Velocity脚本基本的语法全
- [Java] 模板引擎 Velocity 随笔
- 基于Velocity开发自己的模板引擎
- 改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出
- 【推荐】Springboot使用velocity模板引擎
- FreeMarker VS Velocity(freemarker模板引擎和velocity模板引擎比较)
- (一)模板引擎之velocity介绍
- Velocity模板引擎的简单使用