您的位置:首页 > 其它

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 #屏蔽模板文件修改检测机制
修改配置后需要重启应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: