在分析返回200个表格行的JSF2(Mojara)页面的性能时,我看到50%的时间用于响应刚才渲染。对于开发框中的4秒,2完全取决于此页面的渲染。
提高绩效的最佳途径是什么?
(我被告知要替换ui:用jstl代码重复?)
由于JSF对象树的复杂性 - 分析器并没有告诉我太多。
答案 0 :(得分:1)
渲染是任何方式中最昂贵的任务。但是2秒是相当多的(在渲染前2秒,顺便说一句,听起来像DB性能差)。您是否在UIData
组件中大量使用条件?例如。 h:inputText disabled="#{bean.disabled}"
等等。
很难说出提高性能的最佳途径,而且在JSF方面很难改进这一点。难道你不是在整个画面中不自觉地包括网络和/或web浏览器速度吗?较差的网络带宽和较小的服务器端响应缓冲区可能会阻止其中一个。 Web浏览器中糟糕的表呈现性能可能会阻止其中一个。众所周知,MSIE是表渲染性能的一个灾难。请改用FireFox或Chrome。
无论如何,将ui:repeat
替换为c:forEach
并不会有太大帮助。更重要的是,c:forEach
效率稍低,因为它会在每次迭代时调用items
而不是缓存它。
答案 1 :(得分:1)
我知道这是一个旧查询,但这是我过去发现有效的解决方案。这一切都取决于你渲染的内容。
为了渲染简单的字符串列表,必须更快地创建标记库函数
public static String collectionToString(Collection collection, String separator)
{
if (CisNullOrEmpty(collection))
{
return "";
}
// custom join implementation
return Utils.join(collection, separator);
}
对于更复杂的,您可以自定义依赖于对象的函数