asp.net - asp.net 捆绑如何在内部工作

标签 asp.net asp.net-mvc-3

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

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

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

最佳答案

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

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

然后我继续注册 2 个 javascript 文件。一个用于 jquery,另一个用于 bootstrap 。

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 中设置“调试”标志时发生的情况。

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

debugsettofalse

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

funnycharacters

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

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

cache

我们可以看到响应是可缓存的。缓存过期已设置为“2014 年 3 月 26 日星期三 06:49:06 GMT”。从今天开始快一年了。

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

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

关于asp.net - asp.net 捆绑如何在内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15629816/

相关文章:

c# - 动态添加的 DropDownlists 未触发 SelectedIndexChanged 事件

asp.net - IIS ARR - 反向代理的 URL 重写 - 如何发送 HTTP_HOST

asp.net - 在 SQL Server 中将日期转换为刻度

c# - 如何更改 ASP.NET MVC 使用的 "ReturnUrl"参数的名称?

c# - 生成传出 url 时选择了意外的路由

c# - 使用存储过程的 Entity Framework 并发问题

c# - 跨 Asp.NET Core 和框架的数据保护提供程序(生成密码重置链接)

javascript - 授权 MVC3 ASP.NET

asp.net - 我应该如何使用 ASP.Net MVC3 中的值自动填充 Html.EditorFor?

asp.net-mvc-3 - 指定 Html.TextBoxFor 的大小和最大长度