我使用 YuiCompressor 压缩我自己的 JS,但是 MicrosoftAjax.js 没有缩小有什么原因吗?或者是否有一些设置可以运行它的压缩版本(如果有压缩版本)。还是我需要自己反编译并缩小脚本资源?
6 回答
我对这些误导性的答案感到惊讶。
ASP.NET AJAX 始终提供 MicrosoftAjax.js 的调试和压缩版本。web.config 的调试设置和ScriptManager 的 ScriptMode 属性的组合控制引用哪个脚本。
此外,您可以使用“零售”设置来强制压缩脚本。
System.Web.Extensions 中的所有脚本都被缩小了——每个都有两个版本,正如 Dave Ward 的出色回答所指出的那样。当 web.config 处于调试模式时,ScriptManager 默认将使用调试版本。翻转它以使用零售设置或 debug="false" 发布,然后查看脚本。
此外,通过 WebResourceHandler 或 ScriptResourceHandler 提供的脚本实际上是缓存的。它们以最好的方式被缓存——永远,所以它们在以后的访问中甚至不需要 301。查询字符串保持原样,因为它包含加密数据。它是加密的,因为它包含有关脚本资源的信息,包括程序集名称,还因为它可以防止缓存泛滥攻击。
不是在这里寻找代表,只是想提供更多细节。
请参阅http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx,您需要
enableScriptMinification="true"
选项并将 MicrosoftAjax.js 添加到列表中
你想要哪一个:
- MicrosoftAjax.js 已经压缩、混淆了。
- MicrosoftAjax.js 是未压缩和开放的,因此您可以自己阅读和理解它。
编辑: 在我的辩护中,在撰写此答案时,我没有使用 .NET 3.5 的经验;我现在意识到他们已经在这方面做出了一些急需的改进。
显然,MS 并不认为 JavaScript 文件大小很重要(这太疯狂了)。此外,根据我使用 MS Ajax 的经验,他们还在标记中注入了几个 SCRIPT 标记(有时超过 10 个)。这些标签从 WebResource.axd 处理程序中引入脚本。因此,必须发出十个或更多请求才能获得运行页面所需的 Javascript!更荒谬的是,他们在处理程序 URL 上添加了一个疯狂的查询字符串,这可能会阻止脚本被浏览器缓存。
这种疯狂足以让我完全放弃 MS Ajax 并切换到jQuery,这是一个更好的库,特别是因为Visual Studio 现在有 Intellisense for jQuery。
我只能假设它保持原样是为了便于理解,并且正如你已经暗示的那样,我知道你不能自己压缩它的原因,毕竟它只是 JavaScript - 尽管 MS 可能希望你否则,他们不会在上面撒上神奇的精灵粉来让它变得与众不同!:)
[让我们面对现实吧;MS 从不害怕他们代码的大小,不是吗?]