javascript连接文件的运行时比单独的文件慢

时间:2016-09-05 20:45:16

标签: javascript concatenation createjs

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

这里发生了什么?我虽然连接会导致较低的加载时间和较少的http请求,但不会导致较慢的运行时间。这是预期的吗?我可以做其他事情还是应该停止连接成1个文件?

1 个答案:

答案 0 :(得分:1)

我的猜测是Safari可能无法处理非常大的文件。它可能首先将整个文件读取到内存然后进行处理。但是如果它是从一个需要每次放大的小缓冲区开始,那么就是出现内存分配延迟的时候。

在这种情况下该怎么办? Appart比返回更短的文件分发(转而更加可重用),我仍然想到另一个机会:

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

(咳咳......我不得不承认我会期望用一个大的文件获得更好的性能 - 就像你做的那样。但在测试之前,人们永远不会告诉......)

相关问题