MicrosoftAjax.js没有缩小的原因吗?

时间:2009-06-24 13:48:53

标签: javascript asp.net-ajax minify

我使用YuiCompressor压缩我自己的JS,但有没有理由说明MicrosoftAjax.js没有缩小?或者是否有一些设置来说运行它的压缩版本(如果有压缩版本)。或者我是否需要对其进行反编译并自行缩小脚本资源?

6 个答案:

答案 0 :(得分:23)

我对这些误导性的答案感到惊讶。

ASP.NET AJAX始终提供MicrosoftAjax.js的调试版和压缩版。 web.config的调试设置和ScriptManager's ScriptMode property的组合控制引用哪个脚本。

此外,您可以使用the "retail" setting来强制压缩脚本。

答案 1 :(得分:7)

System.Web.Extensions中的所有脚本都被缩小了 - 每个版本都有两个版本,正如Dave Ward的优秀答案所指出的那样。默认情况下,当web.config处于调试模式时,ScriptManager将使用调试版本。翻转它以使用零售设置或debug =“false”发布,然后查看脚本。

此外,通过WebResourceHandler或ScriptResourceHandler提供的脚本实际上是缓存的。它们以最好的方式缓存 - 永远,所以他们甚至不需要在未来的访问中使用301。查询字符串是原样的,因为它包含加密数据。它是加密的,因为它包含有关脚本资源的信息,包括程序集名称,还因为它可以防止缓存泛滥攻击。

不在这里寻找代表,只是想提供更多细节。

答案 2 :(得分:3)

请参阅http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx,您需要

enableScriptMinification="true"

选项并将MicrosoftAjax.js添加到列表

答案 3 :(得分:1)

你更愿意拥有:

  1. MicrosoftAjax.js已经过压缩,已经过模糊处理。
  2. MicrosoftAjax.js是未压缩和打开的,因此您可以自己阅读和理解它。

答案 4 :(得分:0)

编辑:在我的辩护中,在撰写此答案时,我没有使用.NET 3.5的经验;我现在意识到他们已经在这方面做了一些急需的改进。


显然,MS并不认为JavaScript文件的大小非常重要(这是疯狂的)。此外,根据我对MS Ajax的经验,他们还会在标记中注入几个SCRIPT标记(有时超过10个)。这些标记从WebResource.axd处理程序引入脚本。因此,必须提出十个或更多请求才能获得运行页面所需的Javascript!只是为了增加荒谬性,他们将疯狂的查询字符串添加到处理程序URL上,这可能会阻止脚本被浏览器缓存。

这种精神错乱足以让我彻底抛弃MS Ajax并切换到jQuery,这是更好的库,特别是,因为Visual Studio now has Intellisense for jQuery

答案 5 :(得分:-2)

我只能假设它已被保留为易于理解,并且正如您已经暗示的那样,我知道为什么你不能自己压缩它,它毕竟只是JavaScript - 虽然MS可能比如你不相信,他们不会在它上面撒上神奇的小精灵尘埃,让它与众不同! :)

[让我们面对它; MS从来没有害怕他们代码的大小,对吗?]