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

标签 javascript concatenation createjs

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

这里发生了什么?我认为连接会导致加载时间缩短和 http 请求减少,但不会导致运行时间变慢。这是预料之中的吗?我可以做其他事情还是应该停止连接成 1 个文件?

最佳答案

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

遇到这种情况该怎么办?除了返回更短的文件分发(这变得更可重用)之外,我仍然想到另一个机会:

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

(咳咳...我不得不承认,我希望单个大文件能获得更好的性能 - 就像您所做的那样。但在测试之前,人们永远无法判断...)

关于javascript 连接文件的运行时间比单独文件慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337492/

相关文章:

javascript - 连接字符串作为对象属性

mysql - 连接表中多行中的值并将其写入新表中的单元格

r - 如何尽快基于组连接行

javascript - CreateJS 中 2 个移动物体之间的碰撞检测

javascript - 减慢浏览器的连接速度以进行测试

javascript - 函数不在 onclick 事件中调用

javascript - Rx (RxJS) 网址生成器

javascript - CreateJS EaselJS - 不同形状的旋转处理不一致

javascript - 使用箭头键移动 gif,导致错误 Uncaught TypeError : Object function (){throw"Ticker cannot be instantiated. ";}

javascript - 发布到 Web Worker 时 Firefox 中的 DataCloneError