我使用YuiCompressor压缩我自己的JS,但有没有理由说明MicrosoftAjax.js没有缩小?或者是否有一些设置来说运行它的压缩版本(如果有压缩版本)。或者我是否需要对其进行反编译并自行缩小脚本资源?
答案 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)
你更愿意拥有:
答案 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从来没有害怕他们代码的大小,对吗?]