Asp.net MVC奇怪的缓存行为

时间:2014-05-30 12:54:29

标签: asp.net-mvc internet-explorer caching browser-cache

我有一个准备menu sprite from a bunch of PNG images的控制器。由于这是一个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(未修改)响应的后续请求中不会请求该图像。

但是当我在IE中查询图像时,MVC由于某种原因发送了无缓存头:

Pragma: no-cache

毫不奇怪,IE会在每次后续页面加载时请求图像。当然,它已缓存在服务器上的RAM中,因此创建映像没有开销,但它确实消耗带宽将其发送到线路上。

为什么这种行为在MVC中是默认的?我认为MS会希望它在IE中表现更好,而不是更糟。

0 个答案:

没有答案