Asp.net MVC3中FileResult操作的缓存

Asp.net MVC3中FileResult操作的缓存,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我有一个返回FileResult(png图像)的操作。我非常希望浏览器缓存结果,因为对于给定的请求uri,结果不会改变 我使用路由使uri看起来像这样- http://localhost:6094/Map/Tiles/1.0.0/none/2/5/5.png 在action方法中,我调用:- Response.Cache.SetCacheability(HttpCacheability.Public); 在Fiddler中,我可以观察到响应具有以下特征:- Cache-control: p

我有一个返回FileResult(png图像)的操作。我非常希望浏览器缓存结果,因为对于给定的请求uri,结果不会改变

我使用路由使uri看起来像这样-

http://localhost:6094/Map/Tiles/1.0.0/none/2/5/5.png 
在action方法中,我调用:-

Response.Cache.SetCacheability(HttpCacheability.Public);
在Fiddler中,我可以观察到响应具有以下特征:-

Cache-control: public
标题。但是,对同一贴图块的后续请求如下所示:-

    GET http://localhost:6094/Map/Tiles/1.0.0/none/2/5/5.png HTTP/1.1
Host: localhost:6094
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.34 Safari/536.11
Accept: */*
Referer: http://localhost:6094/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
结果是200个响应,以及数据传输

你知道为什么Chrome不屑于缓存我的数据吗

谢谢


slip

您是否尝试过OutputCache属性?这对您来说应该很好,但要指定它的生存期


OutputCache将此缓存在服务器上,而不是在服务器上client@SergeShultz:[OutputCache(持续时间=84600,位置=OutputCacheLocation.Server)]将仅在服务器上缓存。但是,Location的默认值为OutputCacheLocation。任何这意味着输出将缓存在服务器上,但缓存控制标头也将设置为public,以便响应可以缓存在proxys和浏览器上。
[OutputCache(Duration=84600)]