对于JavaScript加载时间来说,哪一个更好:在一个大文件中压缩所有文件还是异步加载所有文件?

对于JavaScript加载时间来说,哪一个更好:在一个大文件中压缩所有文件还是异步加载所有文件?,javascript,asynchronous,performance,user-experience,page-load-time,Javascript,Asynchronous,Performance,User Experience,Page Load Time,一个简单的问题,我不知道它是否有一个简短的答案 说明 我有一个JavaScript文件要加载到网站中,这里有一些关于它们的注释: 它们都来自同一个域(不需要跨域加载) 它们在网站上是完全相同的 有几个文件,比如jQuery,还有5个其他插件,还有我自己的基于它们的应用程序脚本 它们的大小全部压缩=224KB,(我将所有文件合并到一个文件中,然后使用YUI Compressor 2一次性压缩它们 问题 我听说224KB在一个文件中是不理想的,它应该被分成几个文件,最大的是每一个44 KB。我不

一个简单的问题,我不知道它是否有一个简短的答案

说明
我有一个JavaScript文件要加载到网站中,这里有一些关于它们的注释:

  • 它们都来自同一个域(不需要跨域加载)
  • 它们在网站上是完全相同的
  • 有几个文件,比如jQuery,还有5个其他插件,还有我自己的基于它们的应用程序脚本
  • 它们的大小全部压缩=224KB,(我将所有文件合并到一个文件中,然后使用YUI Compressor 2一次性压缩它们
问题
我听说224KB在一个文件中是不理想的,它应该被分成几个文件,最大的是每一个44 KB。我不能回忆起我听到这个的时候,我不确定把它拆分成更多的文件是否有效,但是这是真的,224KB第一次需要很长的时间来加载,考虑到网站加载了图像和CSS。当然

我已经将早期加载JavaScript文件的需要降至最低,并将其放在底部,到目前为止,这是一个很好的进展,但我需要将其与HTML同步加载,以获得时间,要做的决定是:

是或否?

将其保存在一个压缩的大文件中?或者将其拆分为多个压缩文件并异步加载(我知道如何处理依赖关系相关的问题)?

这个问题没有确切的答案。这主要取决于您如何以及何时使用这些文件

通常,您只希望在pageload上下载web应用程序普遍需要的JS文件。特定于模块或特定于页面的JS文件不应在主JS下载中压缩,最好是按需加载


此外,只有当您关心首次用户的用户体验时,这个问题才有效。JS文件在每次访问时都会被缓存。

这取决于站点的内容以及首次加载时间对站点的重要性

尽管如此,我可能还是会从公共CDN加载JQuery之类的东西。一个很大的好处是,它可能已经被缓存了,即使它们从未访问过您的站点

卡布奇诺团队大力支持一个文件——他们制作了一个javascript框架。使用他们的工具制作的应用程序预计会有一些加载时间


从公共CDN加载JQuery和相关应用程序的另一个好处是按目的地增加请求。我相信客户端每个域只能有2个请求,因此通过从google加载JQuery,从JQuery加载插件,从您自己的域加载自定义应用程序代码,浏览器可以同时执行这些请求,而不是等待g,然后发出第三个请求


我想这也为一个大文件增加了另一个性能改进。即使您将该1个文件拆分为2个,也可以通过浏览器中的2个并发请求来检索该文件,这可能会缩短加载时间。

以下是我们为使web应用程序快速运行所做的工作

主JS和CSS文件被压缩并与HTML标记内联。
HTML的空白被删除,图像通过shell脚本转换为
data:image/png

大小约为400kb,但已缓存和压缩。
该web应用程序的移动版本与此相同,但大小约为250kb。 这意味着整个应用程序可以像可执行文件一样在单个http调用中运行。

然后,第二个http调用获取数据(JSON),我们使用页面中现有的标记作为模板在HTML中呈现数据

应用程序分为多个模块,只有普通模块以这种方式预加载。
其他模块将在用户请求时提供