IE不正确地使用它的本地caching的Intranet网站,并返回HTTP 200而不是HTTP 304

我是一个在工作中遇到问题的开发人员。 当我创build任何types的.Net Web应用程序(ASP.Net,ASP.Net MVC)时,将其部署在本地计算机的IIS上,或作为Intranet应用程序在Intranet IIS服务器上运行,并在浏览器中运行, IE浏览器。

通常当你第一次访问一个站点时,文件被下载并存储在浏览器的本地caching中。 在随后的访问中,浏览器使用文件Etags或上次修改date向服务器发送请求。 如果文件没有改变,服务器可以响应HTTP304,从而阻止文件的完全传输。

在我的工作networking上, 除了总是返回HTTP 200的IE 以外 ,所有的浏览器可以正常工作,从而再次下载文件。

我可以在Visual Studio中启动一个新项目,并且caching对其他浏览器可以正常工作,但不能用于IE。 如果我在家中(在我自己的计算机上)创build相同的项目,caching工作正常, 包括 IE浏览器在内的所有浏览器。

这使我相信有一些干扰这个过程的东西。 可能是一些IEconfiguration(这是由一个组策略控制,我没有访问或可能是一个IISconfiguration,这再次我没有访问或其他东西完全。

我有权访问IE的临时文件,我可以看到文件存在于这个文件夹中。

什么可能导致这个? 在接近系统pipe理员之前,我需要一些信息。

在提琴手下的标题

在提琴手下的标题

开发者工具networking选项卡

开发者工具网络选项卡

编辑:

这是我在Visual Studio的IIS Express中创build和托pipe的一个新项目:

IE首次加载: 在这里输入图像说明

Firefox第一次加载: 在这里输入图像说明

IE第二次加载: 在这里输入图像说明 我们可以看到所有的请求都是200,总的时间是相同的。

Firefox第二次加载: 在这里输入图像说明 我们可以看到,主要的请求之后的所有请求都是304,总的时间不到第一个负载的一半。

处理完这个问题后,我发现这是由于IE 11中的IE浏览器开发工具造成的。

我通过同时打开Fiddler和Internet Explorer开发人员工具find了它。

如果在“networking”选项卡上打开“开发人员工具”时进行刷新,则“开发工具和提琴手”将注册所有HTTP 200。

另一方面,如果在开发工具closures并且提琴手打开的情况下进行刷新,则提琴手将注册HTTP 304。

所以这是开发工具强制浏览器不使用caching。

当我在家里尝试相同的testing时,这并没有发生,因为我在家中使用IE Edge,IE 11在工作。 在Edge中这个选项已经改变,导致了结果的不同。