Asp.net mvc Asp.net MVC奇怪的缓存行为

Asp.net mvc Asp.net MVC奇怪的缓存行为,asp.net-mvc,internet-explorer,caching,browser-cache,Asp.net Mvc,Internet Explorer,Caching,Browser Cache,我有一个控制器可以准备一个。由于这是一个CPU密集型的过程,并且图像不会真正更改,因此我在控制器上设置了OutputCache属性,如下所示: [OutputCache(Duration = Int32.MaxValue)] public ActionResult MenuPNGImage() { MenuSprite ms = MenuSprite.BuildFromImages(); return File(ms.PNGImag

我有一个控制器可以准备一个。由于这是一个CPU密集型的过程,并且图像不会真正更改,因此我在控制器上设置了OutputCache属性,如下所示:

        [OutputCache(Duration = Int32.MaxValue)]
    public ActionResult MenuPNGImage()
    {
        MenuSprite ms = MenuSprite.BuildFromImages();
        return File(ms.PNGImageBytes, "image/png");
    }
我想完成两件事。首先,将服务器上的映像缓存在RAM中,这样就不必重新创建映像。这很有魅力。其次,我希望浏览器在本地缓存它,这样就不必在请求之间重新加载

当我在Chrome、FireFox或Opera中请求图像时,一切正常。MVC发送以下标头:

Cache-Control: max-age=0
Chrome会收到消息,不会在后续请求中请求图像,服务器会以304 not modified响应

但当我在IE中重新请求图像时,MVC出于某种原因发送了一个无缓存头:

Pragma: no-cache
毫不奇怪,IE会在每次后续页面加载时请求图像。当然,它缓存在服务器上的RAM中,因此创建映像时没有开销,但在传输过程中确实会消耗带宽


有什么原因可以解释为什么MVC会默认这种行为?我认为微软希望它在IE中表现得更好,而不是更糟

IE发送到服务器的请求有什么不同吗?您是否将IE设置为不缓存数据,并每次请求新数据?你是在多个IE实例上复制了这个,还是仅仅在一个IE实例上复制了这个?我在两个IE11实例上进行了尝试,一个运行在Win7上,另一个运行在Win8上,得到了相同的响应-两个浏览器都不缓存图像。另一方面,Chrome在Win7和Win8机器上运行良好。