我正在通过System.Web.Optimization尝试MVC 4 Beta的捆绑和缩小.当我点击刷新时,我希望我正在使用它的网站会收到304(未修改).
我认为src指向我的js包,/ desktop-js-bundle?v = D33JhbMl9LHkXSPBj1tfRkRI0lheyVmbSMQqD59bXHg1(带有该版本#),只有当服务器上的包中的一个文件被修改时,版本#才会改变.然而,每当我点击刷新并监控Chrome的F12中的网络选项卡时,它就会发出具有相同版本号的请求并获得200状态.
解决方法
Why doesn’t it just return 304?
因为当你点击F5时,你的浏览器缓存就会过期.基本上你的测试是有缺陷的.您应该在不同页面中放置此捆绑包的链接(使用< script>标记).然后,您应该使用超链接导航到这些页面.现在观察网络选项卡.
还要确保您在发布模式下运行.
更新:
好的,在挖了一点之后,我发现了什么.确实总是发送200 HTTP状态代码,这是正常的.但第二次从缓存中获取包.
这是第一个请求:
我们可以看到,在这种情况下,bundle来自具有HTTP缓存响应头的服务器.
这是第二个请求:
我们可以在第二个屏幕截图中清楚地看到捆绑包是从缓存中提供的.注意整条线是如何变灰的. HTTP 200状态代码是虚构的=>客户端甚至不向服务器发送HTTP请求,因为它直接从其缓存中检索捆绑包.
我可以在谷歌浏览器中观察到同样的事情.
对于第一个请求:
对于第二个请求: