【发布时间】:2010-06-29 13:47:42
【问题描述】:
我通过 AJAX 调用从服务器获取一个胖 JSON 数组,然后对其进行处理并使用 Javascript 呈现 HTML。我想要的是让它尽可能快。
Chrome 在我的测试中领先于 FF,但浏览器仍需要 5-8 秒才能呈现约 300 条记录。
我考虑过延迟加载,例如在 Google Reader 中实现的,但这与我的其他用例背道而驰,例如能够获得即时搜索结果(在客户端对我们在JSON 数组)和多个过滤器。
我注意到的一件事是 FF 和 Chrome 在遍历 JSON 数组中的所有项目之前都不会渲染任何内容,即使我在每次循环之后将新创建的元素显式插入到 DOM 中(只要我有HTML)。我想要实现的只是:强制浏览器尽快呈现。
我尝试延迟调用(数组中的每个项目都将由延迟函数处理),但在那里遇到了其他问题,因为似乎不再保证执行顺序(数组下方的一些项目将是在它之前的其他项目之前处理)。
我在这里寻找任何提示和技巧。
【问题讨论】:
-
渲染 300 多个 DOM 节点需要时间。我建议您查看 dojo 网格 (dojotoolkit.org),它实现了延迟渲染,但您仍然可以将所有数据保留在客户端上。
-
最好不将每个元素分别插入到 DOM 中。构建一个容器元素并将其保留在 DOM 之外,直到您将其填满。 (在我看来 300 条记录并不多,您绝对应该能够让它运行速度快于 5 到 8 秒。)
标签: javascript html json dhtml html-rendering