【问题标题】:Browser gets blocked, workers to the rescue?浏览器被阻塞,工作人员来救援?
【发布时间】:2010-03-25 09:41:02
【问题描述】:

我使用 JavaScript 来呈现 20 个表格,每个表格 100 行。 每个表的数据由控制器以 JSON 格式提供。 每个表都分为具有“总数”和其他一些 JavaScript 逻辑代码的部分。一些总数超出了表格本身。

因此,JavaScript 会阻塞浏览器几秒钟(尤其是在 IE6 中):(

我正在考虑使用http://code.google.com/p/jsworker/, 但是 Google Gears Workers(我猜一般是工人)不允许我在工作代码中对 DOM 进行更改,而且在我看来,我不能在 jsworker 工作代码中使用 jQuery。 (也许我在这里错了?)。

这个问题似乎是 JavaScript 编码实践的基础,你能与我分享你的想法如何解决它吗?

【问题讨论】:

    标签: javascript html google-gears


    【解决方案1】:

    Worker 只能通过传递消息与页面的执行进行通信。他们无法直接与页面交互,因为这会带来巨大的困难。

    您需要优化 DOM 操作代码以加快处理时间。值得向谷歌咨询好的做法。

    加快执行速度的一种方法是在 DOM 之外构建表格,并仅在完成时将其插入到文档中。这可以避免浏览器在每次插入时都必须重新绘制,而这是花费大量时间的地方。

    【讨论】:

      【解决方案2】:

      一般来说,您不应该在后台工作人员中更改 UI。您应该始终向主线程发出 worker 已完成的信号,并将结果返回给主线程,然后主线程可以处理该结果。

      HTML5 包含一个用于标签的异步属性,从那里写入您的 UI 会导致一个空白页面,其中只有您想要编写的内容。

      所以你需要另一种方法。 我不是 JS 大师,所以我不能帮你实现,但至少你现在有了这个概念:)

      【讨论】:

        【解决方案3】:

        如果您想深入了解浏览器性能,High Performance Web Sites blog 提供了大量重要信息 — 包括 javascript 何时阻止页面呈现,以及避免此类问题的最佳实践。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-14
          • 2022-01-02
          相关资源
          最近更新 更多