为什么 Firefox 在加载 'big' 文档时比 Chrome 快得多?

Why is Firefox MUCH faster than Chrome when loading 'big' documents?

我正在尝试解决无法接受自定义 html 构建报告的问题,该报告需要 很长时间 才能在 googlechrome 上加载,而加载时间在 firefox 上好多了。

imo 'special' 关于 html 文件。

报告加载时通常带有锚后缀,因此浏览器在加载时应跳转到文件的末尾(='summary section')。

我在 github 存储库中放置了几个示例文件 => browser bongo test

事实证明,您的 html 中可以有 TO FEW JAVASCRIPT :-/

如果您仔细查看 Chrome 分析器工具,您会发现 任何页面的“初始呈现”都非常快,通常不到 100 毫秒, 无论请求的页面是 "big" 还是 "small" html / 纯文本文件。

在初始渲染之后,Chromium 似乎更喜欢接收小垃圾数据, 在完整内容的每个 junk/part 之后执行额外的渲染 收到。 - 这就是导致基于 Chromium 的浏览器处理速度慢得多的原因 大量数据。

你可以轻松地绕过这个奇怪的 "performance flaw",只需在上面擦一点 JavaScript 即可: 只需创建一个包装页面,它通过以下方式加载实际内容 执行 XMLHttpRequest 请求并仅更新 DOM 一次。 1 初始 + 1 渲染后内容加载并设置为 dom = 2 渲染,而不是 100.000ish。

通过使用以下代码,我已经能够在当前版本 Google Chrome 中将 20 MB 纯文本文件的加载时间从 ~280 秒减少到大约 4 秒.

<body>
    <div id="file-content">loading, please wait</div>
    <script type="text/javascript">
        function delayLoad(path, callback) {
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        callback(xhr.responseText);
                    } else {
                        callback(null);
                    }
                }
            };
            xhr.open("GET", path);
            xhr.send();
        }

        function setFileContent(fileData) {
            var element = document.getElementById('file-content');
            if (!fileData) {
                element.innerHTML = "error loading data";
                return;
            }

            element.innerHTML = fileData;
        }

        delayLoad("bongo_files/bongo_20M.txt", setFileContent);
    </script>
</body>