【发布时间】: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