2010-06-21 62 views
6

有什么更好的。在性能方面什么更好?

你有说20个JavaScript文件。 10在所有页面之间共享。所以他们会在主页面。现在这些其他10呢?假设一页使用4/10,另一个使用4/10,另一页使用2/10。

它会 a)更好地将它们全部合并成一个文件(当然是动态的),这样只会产生一个http请求。

B)有10个组合在母版页,那么所有其他网页的会出现合并。

所以在我的一些网页我会在看4或5的Java脚本请求

  1. 一个从主
  2. 一个从谷歌CDN
  3. 一个jQuery的从谷歌CDN
  4. jQuery UI的
  5. 一个用于jQuery验证来自MS CDN
  6. 一个用于该页面的任何内容。

我的大部分脚本已经使用jquery live,因为我使用jquery ajax选项卡,并且必须同时为每个选项卡加载所有脚本。

如果不是每次你去到另一个标签页,它都会下载一组新的javascript,因此它会开始执行绑定事件,例如点击X时间,其中X是用户加载同一标签页的次数。

+0

保持你的js文件比较小,不要把很多东西合并成一个大文件!使用服务器端语言根据当前页面切换它们!尽量减少所有的js文件! – 2010-06-21 23:41:59

+0

可能应该修改标题来说HTTP请求或Javascript性能,因为这不是特别关于JavaScript或jQuery。 – Jordan 2010-06-22 02:17:21

回答

1

根据您使用的语言/服务器的不同,有很多工具可以将页面上所需的JavaScript文件动态组合为仅针对该页面的单个请求。根据您对Microsoft CDN的参考,这听起来像您正在使用ASP.NET。 Here's a combiner that might work for you,它会将您本地JS文件的请求合并为一个请求。如果是我,我会做什么是负载:

  1. JQuery的& JQuery用户界面从谷歌
  2. JQuery验证从MS CDN
  3. 您当地的JS文件合并(使用工具如上述)为一个下载。

这样你可以得到3个并行下载。

+0

好吧,我使用了一种叫做http合成器的东西,但是我的列表只有很少的请求,我可以把它归结为(很少)。我可以将2-3(所有的CDN)结合起来,但是我认为我会失去潜在的缓存版本,所以我就离开了它。 – chobo2 2010-06-21 23:22:45

+0

请记住来自不同域的请求相互平行。因此,Google/MS /本地站点请求也将同时运行。另外,一旦您为特定用户下载了一次JQuery/JQuery UI/JQuery验证,他们很可能会在缓存中拥有该验证。因此,关键是尽可能少地将您的本地资源请求减少到一个请求。 – Keltex 2010-06-21 23:24:02

+0

我会看看不知道它与我使用的http://code.msdn.microsoft.com/HttpCombiner不同。现在对于一个(谷歌的东西)你梳理他们或只是使用链接?是的,我知道不同的域名运行并行,这就是为什么我试图找到第三个网站的jQuery U.我这样,我会让那些3在同一时间。 – chobo2 2010-06-22 00:21:45

0

取决于非共享文件的大小。如果它们不是太大,就把它们组合起来。请求通常需要比转移更长的时间。当然,如果你真的关心很多,你应该做你自己的基准。

但是,如果有疑问,结合。

编辑:我刚刚读你的问题。对于缓存主组合版本,选项B更好。

+0

有多大? – chobo2 2010-06-21 23:25:38

+0

我的经验法则是每个文件大约75kb。更重要的是,最好将至少2个文件分割为并行HTTP下载。 – Jordan 2010-06-22 01:53:12

相关问题