ASP.NET捆绑和缩小。每次请求运行一次?

时间:2015-09-14 14:40:55

标签: asp.net-mvc

我想知道捆绑和缩小在服务器上运行的次数有多少?

每个HTML请求一次吗? 每次浏览器会话一次? 每次应用程序部署后都会一次?

2 个答案:

答案 0 :(得分:6)

Application_Start中调用Global.asax.cs方法时,在部署或重新启动应用程序时会创建分发包。在Application_Start内,调用了BundleConfig.RegisterBundles,这实际上是魔法发生的地方。

public class MvcApplication : System.Web.HttpApplication
{
    // this method is called on application start
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas(); // registers areas
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); // registers filters
        RouteConfig.RegisterRoutes(RouteTable.Routes); // registers routes
        BundleConfig.RegisterBundles(BundleTable.Bundles); // this generates the bundles
    }
}

BundleConfig.cs文件中,RegisterBundles方法是调用以创建所述包的方法。

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        // this is actually what's creating the bundles
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));
        // etc...
    }
}

然后将它们缓存在内存中,可以在/bundles/bundlename?v=versionId服务中为每个HTTP请求访问,但实际的捆绑和缩小过程只发生一次。

答案 1 :(得分:2)

Application_Start 注册的

捆绑缩小运行一次,结果缓存在服务器上。缓存版本提供其他请求。当第一个资源请求时,Aplication_Start将触发。