【问题标题】:JSP Performance using jsp:include使用 jsp:include 的 JSP 性能
【发布时间】:2010-12-01 13:00:20
【问题描述】:

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

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

在创建从服务器内分派的额外请求调用时,性能问题是什么?将其保留为一个 jsp 页面是否会更好地提高性能?

【问题讨论】:

  • 我建议查看 taglibs/etc - 使用 jsp 进行调试包含是一个皇家 PITA。

标签: java performance jsp


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你应该使用:

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

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

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

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

    【讨论】:

      【解决方案3】:

      静态与动态include

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

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

      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

      【讨论】:

        【解决方案4】:

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

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

        如果您不需要在任何 jsp 中使用 session,请将其设置为 session false

        对于include指令,JSP引擎在翻译阶段添加了插入页面的内容,所以对性能没有影响。 对于包含操作,JSP 引擎会在运行时添加插入页面的内容,这会带来额外的开销。

        【讨论】:

          猜你喜欢
          • 2012-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-09
          • 2018-03-13
          • 1970-01-01
          • 2015-06-04
          • 1970-01-01
          相关资源
          最近更新 更多