我对JS解析或性能了解不多。
但是我想知道浏览器解析大文件与总大小相同的小文件时在性能上是否存在差异。
解析速度更快:
10kb vs. (2 x 5kb)
重要吗?还是可以忽略不计?如果我们比较:
1mb vs. (1000 x 1kb)
Note1:这是关于浏览器解析JS的内容。
Note2:我假设它们都是相同的JS代码。我的意思是,无论是在单个文件中,还是在多个较小的文件中拆分,解析的代码都应该相同。
速度方面,单个JS文件总是比多个JS文件更好,因为浏览器将发出较少的网络请求。另外,要获取每个JS文件,浏览器将首先打开HTTP请求连接,执行握手,然后进行数据(JS文件)传输。
由于此,多个JS文件使内容加载变慢。
但是同样取决于JS文件包含什么代码。有关更多详细信息,请查看One big javascript file or multiple smaller files?
(这里是V8开发人员。)
对于parsing速度,脚本的总量很重要,而不是组织成文件的形式。
就是说,可能会有次要效果,与原始解析速度相比,这可能会对整体感知页面加载性能产生更大的影响。正如Ashok的答案所指出的那样,下载是图片的一部分,从历史上看,许多小资源处于劣势,正如您所指出的那样,应通过HTTP2解决。另一方面,与单个较大的块相比,由于并发连接,几个资源可能会得到加速。
另一个值得考虑的效果是缓存。如果您的代码中有一部分很少更改(例如,第三方库,您每隔几个月才更新一次),而另一部分有很大变化(例如,您自己的代码,每隔一天部署新版本),然后将脚本文件沿这一行分割是有意义的,以便浏览器可以缓存未更改的部分。这样至少可以避免下载未更改的部分。一些浏览器甚至可能能够缓存解析/编译代码的结果,这将节省更多的工作。
适用的经验法则是:
((1)做对您的情况有意义的事情] >>(即最方便的事情);或至少从此开始,看看它是否足够好。过早的优化(即:为了使速度提高而使事情变得更复杂,而又没有验证这是否确实必要或有用)通常是个坏主意。 (2)Measure自己进行任何替代,并进行与实际情况尽可能接近的测试。例如,将一个实际的拆分应用于您的实际源(可能是几个块?或者如果拆分是您之前所做的,则将它们合并为一个)并进行测试,而不是生成具有虚拟内容的数千个文件。如果您无法衡量差异,那么就没有重要的差异!如果您[[可以