我通过AJAX调用从服务器获取一个庞大的JSON数组,然后对其进行处理并使用Javascript呈现HTML。我想要的是让它尽可能快。
在我的测试中,Chrome领先于FF,但浏览器渲染大约300条记录仍然需要5-8秒。
我考虑过延迟加载,例如在Google Reader中实现的延迟加载,但这与我的其他用例不一致,例如能够获得即时搜索结果(在客户端对我们在JSON数组中获得的所有记录执行简单搜索)和多个过滤器。
我注意到的一件事是,FF和Chrome在循环遍历JSON数组中的所有项之前都不会呈现任何内容,即使我在每次循环之后都显式地将新创建的元素插入到DOM中(只要我有了HTML)。我想要实现的就是:强制浏览器尽快渲染。
我尝试推迟调用(数组中的每一项都将由延迟函数处理),但遇到了额外的问题,因为似乎不再保证执行的顺序(数组中较低的一些项将在其他项之前处理)。
我在这里寻找任何提示和技巧。
发布于 2010-06-30 01:13:28
尝试:
el.innerHTML = array.join("");
var frag = document.createDocumentFragment();for (循环){ frag.appendChild( el );} parent.appendChild( frag );
发布于 2010-06-29 21:58:01
如果不需要一次显示所有300条记录,可以尝试一次对它们分页30或50条记录,并且只展开JSON数组,因为这些子部分需要通过分页器或本地搜索框显示。转换后,您可以缓存内容,以便在用户上下浏览页面时进行后续显示。
发布于 2010-06-29 21:51:57
尝试在分离的DOM节点或文档片段中创建元素,然后一次性附加所有内容。
https://stackoverflow.com/questions/3141284
复制相似问题