javascript文件太大了? - mvc

时间:2010-11-08 12:35:07

标签: javascript asp.net-mvc

我刚刚使用firebug检查了我的页面大小,并且javascript文件等于478.2K!

    <script src ="<%= Url.Content("/Scripts/MicrosoftAjax.js") %>"></script> 
    <script src ="<%= Url.Content("/Scripts/MicrosoftMvcAjax.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/jquery-1.3.2.min.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/jquery.form.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/jquery.validate.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/xVal.jquery.validate.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/temp.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/jquery-ui-1.8.5.custom.min.js") %>"></script>
    <script src ="<%= Url.Content("/Scripts/jquery.ui.tabs.js") %>"></script

temp.js是我自己的文件,它的代码很少(如10-20)。

那是怎么回事?我的意思是如何解决这个问题?

8 个答案:

答案 0 :(得分:1)

首先摆脱Microsoft*.js。如果你使用jquery,你不需要那些。

答案 1 :(得分:1)

我建议您使用每个js文件的缩小版本,并将它们组合成一个单独的js文件(或尽可能少)。 Here是一篇有趣的文章,可以帮到你。

答案 2 :(得分:1)

除了temp.js(你说它很小),所有其他文件都是第三方库。

我假设您在每个页面上都使用了所有这些库?如果没有,你可以做的一件事就是只将它们包含在正在使用它们的页面上。

文件名表明其中一些已被最小化。如果其他人没有,您可以通过最小化程序运行它们,或者返回主页查看它们是否提供了您可以使用的最小化版本。

其中一些人还可能在其网站上提供一个选项,仅包含您打算使用的功能。 JqueryUI肯定会这样做,但是从您使用的文件名中看起来您已经使用它,但检查是否有任何其他库也提供它。

检查您是否没有任何重叠功能 - 您可以通过删除冗余代码来合理化。如果这意味着编辑第三方库(这通常不是一个好主意),你必须非常谨慎,但你可能会发现你已经拥有了不必要的整个库,在这种情况下,你可以快速摆脱它其中一个。

如果您想将某些脚本卸载到第三方,Google会托管JQuery,JQueryUI和许多其他插件,并允许网站从其服务器加载它们。它不会影响用户必须下载的脚本的大小,但会为您的服务器节省相当多的带宽。

在一天结束时,你有很多大脚本,并且它们提供了很多功能。如果你需要所有这些功能,你将不得不忍受代码的重量。

答案 3 :(得分:1)

他们可以为这种情况做很多事情

  1. 使用缩小版或生产版而不是开发人员版
  2. 如果可以,请从CDN加载它们。
  3. 如果文件没有长时间更改,则需要使用缓存。
  4. 他们还可以为应用程序性能改进做很多其他事情。

答案 4 :(得分:0)

您可以尝试gzip压缩,以便服务器对其进行压缩并由浏览器解压缩。这应该有所帮助。

也许是like this

或者更好的是,在IIS本身like this

答案 5 :(得分:0)

考虑到你正在导入jquery UI库,jquery,微软ajax框架,一些验证框架等......它还不错......

您可以尝试缩小文件以节省空间。这里YUI Compressor

答案 6 :(得分:0)

如果您使用知名且受欢迎的库(如jquery),则可以使用来自 cdn 内容交付网络)的外部托管文件,这些文件不仅仅是可能已经在浏览器缓存中(因此不需要再次下载):google list of libsjquery ref

缩小它:http://jscompress.com/

我还建议重构它(重写它以便使用更少的内存)。

答案 7 :(得分:0)

Telerik Extensions For ASP.NET MVC

这种做法怎么样?

MvcContrib: an Outer Curve Foundation project

MvcContrib.IncludeHandling是一样的方法。