JSP、EJB 或 JDBC 的应用。
2.1 使用缓冲标记
一些应用服务器加入了面向 JSP 的缓冲标记功能。例如,BEA 的 WebLogic Server 从
6.0 版本开始支持这个功能,Open Symphony 工程也同样支持这个功能。JSP 缓冲标记既能
够缓冲页面片断,也能够缓冲整个页面。当 JSP 页面执行时,如果目标片断已经在缓冲之
中,则生成该片断的代码就不用再执行。页面级缓冲捕获对指定 URL 的请求,并缓冲整个
结果页面。对于购物篮、目录以及门户网站的主页来说,这个功能极其有用。对于这类应
用,页面级缓冲能够保存页面执行的结果,供后继请求使用。
对于代码逻辑复杂的页面,利用缓冲标记提高性能的效果比较明显;反之,效果可能
略逊一筹。
请参见《用缓冲技术提高 JSP 应用的性能和稳定性》。
2.2 始终通过会话 Bean 访问实体 Bean
直接访问实体 Bean 不利于性能。当客户程序远程访问实体 Bean 时,每一个 get 方法都
是一个远程调用。访问实体 Bean 的会话 Bean 是本地的,能够把所有数据组织成一个结构,
然后返回它的值。
用会话 Bean 封装对实体 Bean 的访问能够改进事务管理,因为会话 Bean 只有在到达事
务边界时才会提交。每一个对 get 方法的直接调用产生一个事务,容器将在每一个实体
Bean 的事务之后执行一个“装入-读取”操作。
一些时候,使用实体 Bean 会导致程序性能不佳。如果实体 Bean 的唯一用途就是提取
和更新数据,改成在会话 Bean 之内利用 JDBC 访问数据库可以得到更好的性能。
2.3 选择合适的引用机制
在典型的 JSP 应用系统中,页头、页脚部分往往被抽取出来,然后根据需要引入页头、
页脚。当前,在 JSP 页面中引入外部资源的方法主要有两种:include 指令,以及 include 动
作。
include 指令:例如<%@ include file="copyright.html" %>。该指令在编译时引入指定的
资源。在编译之前,带有 include 指令的页面和指定的资源被合并成一个文件。被引用的外
部资源在编译时就确定,比运行时才确定资源更高效。
include 动作:例如<jsp:include page="copyright.jsp" />。该动作引入指定页面执行后生成的
结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但时,只有当被引用的内
容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时,使用
include 动作才合算。
2.4 在部署描述器中设置只读属性
实体 Bean 的部署描述器允许把所有 get 方法设置成“只读”。当某个事务单元的工作只
包含执行读取操作的方法时,设置只读属性有利于提高性能,因为容器不必再执行存储操