在调用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
}
}
Run Code Online (Sandbox Code Playgroud)
在您的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...
}
}
Run Code Online (Sandbox Code Playgroud)
然后将它们缓存在内存中,可以进行访问/bundles/bundlename?v=versionId,并提供每个HTTP请求,但捆绑和微小只发生一次的实际过程.