我想知道捆绑和缩小在服务器上运行的次数有多少?
每个HTML请求一次吗? 每次浏览器会话一次? 每次应用程序部署后都会一次?
答案 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)
捆绑和缩小运行一次,结果缓存在服务器上。缓存版本提供其他请求。当第一个资源请求时,Aplication_Start将触发。