2011-02-02 159 views
3

我在ASP.NET MVC中开发并使用多个JavaScript文件。例如。 jQuery,jQuery UI,谷歌地图,我自己的JavaScript文件等。多个JavaScript文件合并为一个

对于性能,我应该将它们合并为一个吗?如果是这样,怎么样?

+2

[将javascript放在一个.js文件中或将它分解成多个.js文件?](http://stackoverflow.com/questions/555696/put-javascript-in-one-js-file-或断 - 它出 - 到 - 多JS-文件) – Shoban 2011-02-02 16:58:51

回答

10

要多文件合并成一个原因是如此,以尽量减少设置的延迟和拆除http请求,你做得越好,越少。但是,许多较新的浏览器并行下载JavaScript文件(仍然按顺序执行)。结果是下载一个1Mb文件可能比三个350Kb文件慢。我特地做的是我的文件分成三束:

  • 外部LIB文件(jQuery的海军报,插件)
  • 内部LIB文件(由多页共享)
  • 页特定文件(仅用于该页面,可能是两页)

这样,我就得到了两全其美的好处:在启动时不会出现过多的http请求,而且它也不是一个单独的文件, t受益于并行下载

同样适用于CSS,每个页面加载三个CSS包。总而言之,我们的网页下载了六个捆绑文件和主html文件。我觉得这是一个很好的妥协。您可能会发现不同的文件分组对您更好,但我的建议是不要创建单个分发包,除非它是单页应用。如果您发现自己将相同的文件放入不同的捆绑包中,现在是时候重新考虑绑定策略了,因为您多次下载相同的内容。

要使用什么? Martijn的建议是关于钱的。从我的经验来看,YUI是最广泛使用的,这就是我以前和现在的工作中使用的。

0

如果他们都将被包含在您的所有网页上,那么它并没有真正有所作为。但是,如果某些内容仅与某些页面相关,则在技术上最好将它们分开,并且只在相关页面上包含相关内容。

-1

据我所知,你应该确实:少文件意味着更少的http获取,因此当用户第一次加载页面时性能更好。 因此,他们将节省一秒钟,他们会在第一页的页面上出现。但之后,这些文件被兑现,并没有任何区别...

我还没有挖掘到自己的JavaScript引擎,但一个文件中的函数将以相同的方式处理,如果它是在一个大文件或一个小文件中。所以在执行中没有任何区别。

因此,节省您的时间,什么都不用改因为它会花费你太多的时间过少的回报,尤其是当你会发现你想要的最新版本的jQuery(新版本出来今天btw),并且你必须重新concatene的一切...

+0

当文件级联的js为一个,可以有可变的问题,如果两个具有不同的文件的名称相同。在不同的文件或一个文件中变量的范围不一样。 – Cedric 2011-02-02 17:10:33