【问题标题】:JSP/JSTL how to improve speed of using c:forechJSP/JSTL 如何提高使用 c:foreach 的速度
【发布时间】:2017-04-08 04:15:20
【问题描述】:

我已经开始查看 Web 应用程序中存在一些性能问题的页面。这是一个使用 JSP 的 Spring MVC 应用程序。 有一个部分是这样构建的:

 <c:forEach items="${people}" var="person">
     //A number of <form:input>s bound to "person" in here
 </c:foreach>

随着“人”的数量变大,这似乎渲染得很慢。迭代次数甚至不必那么高就可以变慢。我可以看到页面一个一个地加载每个输入块。

我一直在尝试确定瓶颈是什么,我认为似乎只是 for 循环的性质很慢。

如果我执行以下操作:

<div with some style><input></div>
//Copy this 8000 times

页面呈现速度非常快。 但以下:

<c:forEach var="i" begin="1" end="8000">
<div with some style><input></div>
</c:foreach>

渲染缓慢。

我想我有点困惑,因为它似乎将每次迭代发送到客户端进行渲染,而不是构建 HTML 然后一次发送所有内容? (也许我错了?)

有没有办法让这个加载更快?为 JSP 设置一些预编译会更快(尽管我不确定 ${people} 是如何在运行时确定的)?

【问题讨论】:

  • 不要使用 jsps,来自 ajx 调用的延迟加载
  • 世界已经从 jsp 开始,特别是 jstl。
  • 是的,我确实知道客户端框架是当今的发展方向(不幸的是,此时不是一个选项)。但是人们肯定用 JSP/JSTL 渲染做过类似的事情。我认为一定有问题,好像我只显示 6-10 个“人”的字段,页面呈现速度非常慢。

标签: java html jsp spring-mvc jstl


【解决方案1】:

您使用分页。所有编程都使用延迟加载。 延迟加载是计算机编程中常用的一种设计模式,用于将对象的初始化推迟到需要它的时候。如果使用得当和适当,它可以提高程序运行的效率。延迟加载的反面是急切加载。

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2018-03-22
    • 1970-01-01
    • 2012-09-23
    • 2013-01-15
    • 2014-04-18
    • 2015-02-19
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多