2013-03-26 93 views
6

我很想知道asp.net捆绑如何工作。asp.net捆绑如何在内部工作

我知道我们必须将所有脚本,css和图像添加到捆绑包中,以便浏览器将启动对所有资源的单个请求。

我有些困惑,页面将如何从客户端浏览器引用这些捆绑资源。

回答

8

让我们来看看在System.Web.Optimization中使用绑定时会发生什么。

在这个例子中,我使用了“Empty ASP.NET MVC 4模板”,并从nuget中获取了最新的“Microsoft.AspNet.Web.Optimization”包。

然后我开始注册2个JavaScript文件。一个用于jquery,另一个用于引导。

public static void RegisterBundles(BundleCollection bundles) 
{ 
    var javascriptBundle = new Bundle("~/bundles/javascripts") 
     .Include("~/Scripts/jquery-{version}.js") 
     .Include("~/Content/bootstrap/js/bootstrap.js"); 
    bundles.Add(javascriptBundle); 
} 

现在我们已经完成了设置,让我们看看当我们查看页面时会发生什么。

debugview

你可以看到,无论是JavaScript文件只是包括作为我们通常会做。当你在web.config中设置了“debug”标志时,会发生这种情况。

让我们把它变成假,看看现在会发生什么。

debugsettofalse

现在我们看到的是加入一个参考,但有一个非常独特的看位置。通过点击它,我们可以看到它吐出了我们的软件包中引用的两个JavaScript文件的缩小和合并版本。

funnycharacters

这个有趣的查询字符串参数v = loMmcAiXrKwMoVsM8Ok8Q5jVmuFQUI3fiiRVJQC33Hs1是我们的内容的引用,我们可以看到,无论我们有多少次命中的网站,它会保持不变。 (即多次刷新)。

让我们来看看小提琴手对我们的javascript文件的引用。

cache

我们可以看到,响应是可缓存。缓存到期时间设置为“Wed,26 Mar 2014 06:49:06 GMT”。距离今天差不多一年。

对资源的后续请求将从浏览器的缓存中读取。 “此HTTP/304响应表示现有的缓存响应保持新鲜,HTTP/304响应中的缓存生命期标头可用于更新缓存响应的新鲜度。”

如果您需要了解更多信息,请参见也http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

+0

你可以不用解释它任何好转。 – 2016-07-22 17:04:13