7

我很想知道 asp.net 捆绑是如何工作的。

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

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

4

1 回答 1

10

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

在此示例中,我使用了“空 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);
}

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

调试视图

您可以看到这两个 javascript 文件都像我们通常所做的那样被包含在内。当您在 web.config 中设置了“调试”标志时,就会发生这种情况。

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

调试设置为假

现在我们看到的是添加了一个参考,但具有一个非常独特的位置。通过单击它,我们看到它吐出了我们包中引用的两个 javascript 文件的缩小和组合版本。

有趣的人物

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

让我们看看 fiddler 对我们的 javascript 文件的引用是怎么说的。

缓存

我们可以看到响应是可缓存的。缓存过期时间已设置为“Wed, 26 Mar 2014 06:49:06 GMT”。从今天算起快一年了。

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

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

于 2013-03-26T06:52:30.037 回答