在ASP.NET中捆绑单个文件的成本/好处是什么?

在ASP.NET中捆绑单个文件的成本/好处是什么?,asp.net,asp.net-mvc-5,bundle,Asp.net,Asp.net Mvc 5,Bundle,我正在使用asp.NETMVC5创建一个网站,我需要在单个页面中添加一个特定的css和js文件。我的问题是,为单个css或js文件创建一个新包有什么好处?或者捆绑单个文件是一种糟糕的做法,我不应该这么做 下面的代码是我所说的不捆绑与捆绑单个文件的意思: Traditional Method: <link href="/content/css/foo.css" rel="stylesheet"/> <script src="~/content/js/bar.min.js">

我正在使用asp.NETMVC5创建一个网站,我需要在单个页面中添加一个特定的css和js文件。我的问题是,为单个css或js文件创建一个新包有什么好处?或者捆绑单个文件是一种糟糕的做法,我不应该这么做

下面的代码是我所说的不捆绑与捆绑单个文件的意思:

Traditional Method:
<link href="/content/css/foo.css" rel="stylesheet"/>
<script src="~/content/js/bar.min.js"></script>

Bundle Method:
bundles.Add(new ScriptBundle("~/bundles/bar").Include(
    "~/content/js/bar.min.js"));

bundles.Add(new StyleBundle("~/content/foobundle").Include(
     "~/content/css/foo.css"));
传统方法:
捆绑法:
添加(新脚本包(“~/bundles/bar”)。包括(
“~/content/js/bar.min.js”);
添加(新样式包(“~/content/foobundle”)。包括(
“~/content/css/foo.css”);

这个问题只涉及捆绑单个文件。就像我的例子一样,我使用的是一个日期选择器插件,它只在我的ASP.NET MVC应用程序的一个页面上使用,因此将css和js文件添加到我的整个网站包中是没有意义的。

这是一个有价值的功能,在生产环境中更有价值。也就是说,在我参与的项目中,无论文件数量多少,我们都会使用该功能

这个答案非常好:


首先,捆绑是一件一劳永逸的事情,所以我不会太关注捆绑的性能成本。换句话说,第一次请求捆绑包时,必须创建它,但是每个后续请求只是静态地提供先前创建的文件(假设您不更改捆绑包)


捆绑单个文件是否有价值?好吧,这取决于单个文件。它有多大?它已经最小化了吗?如果它是一个大的、未动画化的文件,那么是的,捆绑它有很大的价值,因为捆绑版本将是一个较小的文件大小。当然,对于多个文件,这一点更为明显,因为这样不仅可以减少文件大小,还可以减少请求。但是,我仍然建议您始终只使用捆绑包。就像我上面说的,捆绑的成本只发生在第一次请求时,如果你真的关心它,那么在你发布网站后,你总是可以请求捆绑的成本。然后,每个进一步的请求都会被静态地服务,直到您更改捆绑包为止。

您必须对其进行度量。使用捆绑包(例如)时,您还可以获得版本控制,如果您认为它是重复的,则可能有价值,然后将其标记或投票关闭。现在,你的答案并不是独立的。谢谢你的回复和链接。因此,请澄清,即使是在单个文件的情况下,您仍然会为其创建捆绑包?您是否预期会有更多的文件?如果是的话,那么是的。如果你不期望更多的文件呢?就像你想加载一个只在一个网页上使用的插件。因此,我认为将它添加到整个网站包中是没有意义的,而只加载正在使用它的页面上的css和js文件。@Wellspring没有其他人可以为您回答这个问题。在某些时候,你需要为你的应用程序做出自己的决定。说得好。我想补充一点,您还可以在运行时进行捆绑和缩小,其中一些已经集成到VS中。然后您可以避免“第一个请求”问题。嘿,回答得很好!感谢您花时间解释ASP.NET中捆绑的工作原理。作为捆绑包的新手,我不确定它是如何影响加载时间的,但这很有意义。谢谢你回答这个单一文件的问题。我将始终使用捆绑包。:)