ASP.net 打包器会自动缩小文件吗?

Does the ASP.net bundler automatically minify files?

我正在使用 ASP.net MVC 4。 如问题所述,如果我放置一堆 JS 文件(或 CSS,为此matter) 成一个包,它会 自动 缩小吗?例如,我的包应该是:

        bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
            "~/Scripts/jquery-masked.js"
            "~/Scripts/jquery.idletimer.js"
            ));

或者它是否应该包含最初的缩小文件:

        bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
            "~/Scripts/jquery-masked.min.js"
            "~/Scripts/jquery.idletimer.min.js"
            ));

??

编辑: 现在我想知道捆绑 .min 文件是否会增加任何优化。它会提高性能,包括捆绑包中的 .min 文件而不是基本文件吗? (也许 "minifier function" 需要一些时间?)

您不必包含缩小文件,这是由捆绑引擎自动完成的。事实上,我记得包括缩小文件导致的问题(也许这是在最新的 mvc 版本上修复的)

您可能认为这不起作用,因为优化(捆绑和缩小)仅在 web.config 上的 debug=false 时执行。

<system.web>
     <compilation debug="false" />
</system.web>

即使在 debug = true 使用 BundleTable.EnableOptimizations 时,也有一种强制优化的方法。这里有一个例子

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                 "~/Scripts/jquery-{version}.js"));

    BundleTable.EnableOptimizations = true;
}

Asp.Net 捆绑器确实将同一个捆绑包中的所有脚本捆绑到一个文件中,并按照它们在捆绑包中定义的顺序列出。然后将这个单个文件缩小并交付给客户端。

如果您在脚本目录中同时包含脚本的正常版本和缩小版本,捆绑器将在调试会话期间自动部署完整脚本,并在生产期间自动部署缩小版本。您应该避免在捆绑配置中引用脚本的缩小版本,除非您希望将缩小版本部署到调试会话中。

这是两个不同的术语,称为捆绑和缩小。
Minification :您是通过重命名变量来压缩内容的 JS 文件的缩小版本。
捆绑 :完全是另一回事。为了减少网络往返,最好将所有内容合并到一个文件中,并在一个请求中将其下载到客户端。

因此您可以捆绑 JS 的缩小版本以获得此好处。