【问题标题】:Does the ASP.net bundler automatically minify files?ASP.net 捆绑器会自动缩小文件吗?
【发布时间】:2015-07-31 15:23:51
【问题描述】:

我正在使用 ASP.net MVC 4。 就像问题所述,如果我将一堆 JS 文件(或 CSS,就此而言)放入一个包中,它会 自动被缩小?例如,我的捆绑包应该是:

        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 文件而不是基本文件吗? (也许“缩小器功能”需要一些时间?)

【问题讨论】:

  • 为了确定可以加这个参数BundleTable.EnableOptimizations = true;

标签: c# asp.net-mvc bundle bundling-and-minification


【解决方案1】:

您不必包含压缩文件,这是由捆绑引擎自动完成的。事实上,我记得包括缩小文件导致的问题(也许这是在最新的 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;
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 所以澄清一下,如果缩小文件存在于您的目录中,它会自动部署该文件(在生产会话期间)并且不会即时进行任何缩小转换?
    • 如果捆绑包中所有脚本的缩小版本都存在,它们仍将捆绑到单个捆绑包文件中,但该文件不会进行任何进一步缩小。否则,缩小版本将与非缩小文件内联在文件中,并且文件进行缩小。
    【解决方案3】:

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

    所以你可以捆绑缩小版的 JS 来获得这个好处。

    【讨论】:

    • 虽然这不是直接回答问题,但很好地解释了 MinificationBundling 之间的区别
    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2023-03-21
    相关资源
    最近更新 更多