Javascript连接文件的运行速度比单独文件慢

javascript concatenated file has slower runtime than the separate files

本文关键字:文件 单独 速度 运行 连接 Javascript      更新时间:2023-09-26

我正在做一个大的javascript项目,我遇到了一些我没想到会发生的事情。在我的index.html中,我加载了几十个javascript文件,帧率(基于createjs)大约是30。在我的构建脚本运行之后,所有这些javascript文件都被连接成一个并缩小。然而,在iPad 3上的Safari中,帧率下降到了10 (iPad 4上也有类似的情况)。我尝试不缩小,只进行了连接,但帧率仍然只有10。我做的另一个测试是手动将我的all.js分成3个单独的文件,这将fps增加到15。

这是怎么回事?我认为连接会导致更低的加载时间和更少的http请求,但不会导致更慢的运行时。这在预料之中吗?我能做点别的吗,或者我应该停止连接到一个文件中吗?

我猜可能是Safari不能很好地处理非常大的文件。它可能首先将整个文件读入内存,然后再对其进行处理。但是,如果它从一个每次都需要扩大的小缓冲区开始,那么就会出现内存分配延迟。

在这种情况下该怎么办?除了返回到更短的文件分发(这变得更易于重用),我仍然认为另一个机会:

如何压缩 4Mb的文件?如果您可以对服务器端点进行编程,使其压缩(例如gzip),那么肯定会将其大小减少到10%-20%(因为文本文件很容易压缩到很高的比例)。

(嗯哼…我不得不承认,我本来希望一个大文件能有更好的表现——就像你那样。)