使用jsp:include的JSP性能

时间:2009-09-25 19:40:52

标签: java performance jsp

我开始将一个大型JSP文件分解为一些较小的JSP页面,因此我可以在网站的其他区域重用它。

我可以采用离开的方法作为一个大型的Monolithic JSP文件,它接受参数并相应地调整它的行为。我可以采取的另一种方法是将它分开,以便通过jsp:include调用它。

创建从服务器内调度的其他请求调用时,性能问题是什么?将它保存为一个jsp页面是否更好的性能?

4 个答案:

答案 0 :(得分:24)

jsp:include是一个运行时指令,与<%@ include ... %>指令不同,它恰好是编译时指令(实际上是转换时间)。编译时include指令相对无害,因为JSP通常是为生产预编译的,或者是在为应用程序的每个部署编译的最坏情况下。因此,最好对静态文件使用编译时指令,因为文件不会在运行时更改。

另一个头上的运行时include指令,如果误用,可能会导致一些性能损失,特别是对于包含的静态文件。这主要是因为JSP容器必须获取静态文件的内容并将它们包含在响应中。因此,保留运行时指令的用法,用于真正有用的场景,其中另一个servlet或jsp的响应将包含在响应中,而不仅仅是为了使代码看起来很好。

答案 1 :(得分:17)

您应该使用:

<%@ include file="page.jsp" %>

这会在翻译时添加page.jsp的内容,并且没有开销。

<jsp:include page="page.jsp" />

您的方法在运行时添加内容并增加了大量开销。

答案 2 :(得分:3)

静态与动态include

include指令制作包含页面的副本,并在翻译期间将其复制到JSP页面(“包含页面”)。这称为静态include(或translate-time include),并使用以下语法:

<%@ include file="/jsp/userinfopage.jsp" %>

{b}运行时期间,jsp:include操作动态地包含包含页面输出中包含页面的输出。这称为动态包含(或运行时包含),并使用以下语法:

<jsp:include page="/jsp/userinfopage.jsp" flush="true" />

性能注意事项

静态包括影响页面大小;动态包括影响处理开销。静态包括避免动态包含所需的请求调度程序的开销,但在涉及大文件的情况下可能会出现问题。

动态包含会增加处理开销,需要额外调用请求调度程序。

http://docs.oracle.com/cd/A97336_01/buslog.102/a83726/keydev1.htm#1015959 http://docs.oracle.com/cd/A97336_01/buslog.102/a83726/genlovw3.htm

答案 3 :(得分:0)

不应该创建一个场景来一次向UI加载大量数据,这将影响您实现jsp的任何方式的性能。把事情简单化。了解用户在该特定方案中可能读取的数据量。保持UI用户友好,业务友好和技术友好。

计算mow很多静态/动态内容,并根据它的上下文使用include。如果要显示记录,请使用10-50条记录分页。更好地使用任何框架来解决基本问题,而不是从头开始解决。

如果您不需要在任何jsp中使用会话,请将其设为会话false &lt;%@ page session =&#34; false&#34; %GT;

对于include指令,JSP Engine在转换阶段添加插入页面的内容,因此它对性能没有影响。 对于include操作,JSP Engine会在运行时添加插入页面的内容,这会产生额外的开销。