代码之家  ›  专栏  ›  技术社区  ›  Shaun Mundi

使用jsp:include的jsp性能

  •  22
  • Shaun Mundi  · 技术社区  · 15 年前

    我开始将一个大的JSP文件分解成一些较小的JSP页面,这样我就可以在站点的其他区域中重用它。

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

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

    4 回复  |  直到 9 年前
        1
  •  23
  •   Jama A.    9 年前

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

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

        2
  •  17
  •   Keith Adler    15 年前

    您应该使用:

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

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

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

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

        3
  •  3
  •   user2601995    11 年前

    静态与动态 include

    这个 包括 指令,生成包含页面的副本,并在 翻译 . 这称为静态include(或翻译时间include),并使用以下语法:

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

    这个 jsp:include 操作,在 运行时 . 这称为动态include(或运行时include),并使用以下语法:

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

    性能注意事项

    静态包括影响页面大小;动态包括影响处理开销。静态include避免了动态include所必需的请求调度器的开销,但在涉及大型文件的情况下可能会有问题。

    动态include确实增加了处理开销,需要对请求调度器进行额外的调用。

    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

        4
  •  0
  •   user3924979    10 年前

    不应该创建一个一次将大量数据加载到UI的场景,这将影响性能,无论您如何实现JSP。保持简单。了解用户在该特定场景中可能读取的数据量。保持用户友好、业务友好和技术友好。

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

    如果您不需要在任何JSP中使用会话,请将其设为会话假。 <%@page session=“false”%>

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