【问题标题】:RichFaces rich:insert takes a long time to output large filesRichFaces rich:insert 输出大文件需要很长时间
【发布时间】:2010-03-18 18:00:08
【问题描述】:

我正在使用这样的 RichFaces <rich:insert

<rich:panel header="my head">
    <a4j:outputPanel ajaxRendered="true">
        <rich:insert src="#{MyBacking.myPath}" highlight="groovy" />
    </a4j:outputPanel>
</rich:panel>

如果我有一个 60k 的文件要输出,则需要 23 秒。我需要输出一些比这更大的文件的内容,显然文件越大,等待内容的时间就越大。 another related question 的答案中的建议是引入分页。我会的,但问题是,为什么使用 JSF/RichFaces 输出 60k 的文本需要这么长时间?也就是说,使用 Windows XP SP2 PC 读取本地磁盘 - 我可以从日志中看到数据已经从网络写入磁盘。

其他脚本语言似乎比这更快 - 这可能与 JSF 生命周期必须处理文本有关吗?

谢谢

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    如果它是一个文本文件(而不是二进制文件),并且您不需要语法高亮,为什么不将它包含在&lt;a4j:include&gt; 中?

    如果你真的需要语法高亮,那么你可以尝试:

    • 升级到最新版本的richfaces
    • 验证缓慢是否不是来自浏览器的 javascript 引擎
    • 使用其他语法更高级,如markdown

    【讨论】:

    • 我试过了。工作正常,除了文件没有 html 中断标签。当我把它们放进去时,它又跑得很慢。
    • @Mark Lewis 我建议的 4 个选项中,您尝试了哪一个? :)
    • 我尝试了 a4j:include 标签 - (参见前面的评论)。我正在使用最新版本的 RF。检查 javascript 引擎很有趣,但我使用的是最新的 FF,所以没想到会这样。我不需要强调——重要的是性能。我使用了一个有效的 iframe 解决方案。
    • @Mark Lewis - 好的。我没有得到关于中断标签的评论。你什么意思?
    • 当我使用 a4j:include 包含文本时,数据会按原样显示 - 没有行尾,因为它们不是
      而是 unix 或 win 行尾。我在 bean 中放了一些东西到replaceAll("\n", "&lt;br /&gt;") 看看它是否有效并且确实有效,但是日志 STDOUT 说这项工作很快完成,并且使用 html 换行标记编辑的相同文本的浏览器显示导致文本正确显示,但是只有在很长一段时间后(这对用户来说是不可接受的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多