4

我正在尝试 MVC 4 Beta 的捆绑和缩小 thru System.Web.Optimization。我希望我使用它的网站304 (Not Modified)在我点击刷新时会收到一个。

我认为 src 对我的 js 包/desktop-js-bundle?v=D33JhbMl9LHkXSPBj1tfRkRI0lHeYVmbSMQqD59bXHg1(带有那个版本号)的意义在于,版本号只有在服务器上包中的一个文件被修改时才会改变。然而,每次我点击刷新并监控 Chrome 中的“网络”选项卡时F12,它都会发出具有相同版本号的请求并获得200状态。

为什么它不只返回 304?,这将减少负载并提高性能。谢谢!

4

2 回答 2

2

为什么它不只返回 304?

因为当您点击时F5,浏览器的缓存就会过期。基本上你的测试是有缺陷的。您应该将指向此捆绑包的链接放在不同的页面中(使用<script>标签)。然后,您应该使用超链接导航到这些页面。现在观察Network标签。

还要确保您在发布模式下运行。


更新:

好的,在挖掘了更多之后,这就是我发现的。确实总是发送 200 HTTP 状态码,这是正常的。但是第二次从缓存中获取捆绑包。

这是第一个请求:

在此处输入图像描述

我们可以看到,在这种情况下,捆绑包来自带有 HTTP 缓存响应标头的服务器。

这是第二个请求:

在此处输入图像描述

在第二个屏幕截图中,我们可以清楚地看到捆绑包是从缓存中提供的。注意整条线是如何变灰的。HTTP 200 状态代码是虚构的 => 客户端甚至不会向服务器发送 HTTP 请求,因为它直接从其缓存中检索包。

我可以在谷歌浏览器中观察到同样的事情。

对于第一个请求:

在此处输入图像描述

对于第二个请求:

在此处输入图像描述

于 2012-03-21T12:44:23.047 回答
1

我遇到了同样的问题,问题出在 Microsoft.AspNet.Web.Optimization 包上。如此处所述:http: //aspnetoptimization.codeplex.com/workitem/127,版本 1.1.2 - 1.1.3 受到影响。降级到 1.1.1 后,它工作正常,刷新后未更改的资源返回 304。

您可以使用以下命令在包管理器控制台中执行此操作:

PM> Uninstall-Package "Microsoft.AspNet.Web.Optimization"
PM> Install-Package "Microsoft.AspNet.Web.Optimization" -Version 1.1.1
于 2015-09-30T09:47:52.750 回答