使用innerText加速HTML渲染

时间:2018-10-29 20:42:09

标签: javascript html html5 performance google-chrome

我有一个看起来像这样的HTML文件:

self.id

加载此文件时,我会立即看到文本,没有延迟

对我来说,下一步是使用js加载文本。像这样

<pre>very long text (3 megabytes)</pre>

现在,文本的加载要慢得多-单击set_text按钮时,浏览器冻结约5秒钟,然后将文本呈现在pre中。

我的问题是:有什么方法可以加快JS版本并使其与普通html一样快?

edit:我正在寻找一个简单的解决方案-就像HTML解决方案一样。排除了分块加载。另外,这是一个众所周知的问题吗?如果是这样,什么是最佳解决方案?

2 个答案:

答案 0 :(得分:1)

只需隐藏元素:

 <pre id="content" style="display:none">very long text (3 megabytes)</pre>

然后显示:

 document.querySelector("content").style.display = "block";

答案 1 :(得分:1)

这里,文本是按块加载的。与您的示例中的一套相比,它可能需要更长的时间,但是没有挂起。

<button type="button" id=set_text>set text </button>
<pre ></pre>
<script type="text/javascript">
    var longText = "..your long text...";
    document.querySelector('#set_text').onclick = e => load('');
    var chunkSize = 100000;
    var start = -chunkSize;
    function load(text) {
        var node = document.createTextNode(text);
        document.querySelector('pre').appendChild(node);

        if (start + chunkSize >= longText.length) {
            alert("Completed");
            return;
        }

        start += chunkSize;
        chunkSize = Math.min(chunkSize, longText.length - start);
        setTimeout(load, 0, longText.substr(start, chunkSize));
    }
</script>