【发布时间】:2012-02-23 17:00:57
【问题描述】:
我有一个动作方法,它返回一个文件并且只有一个参数(一个 id)。
例如
public ActionResult Icon(long id)
{
return File(Server.MapPath("~/Content/Images/image" + id + ".png"), "image/png");
}
我希望浏览器在我第一次访问它时自动缓存此图像,以便下次它不必下载所有数据。
我尝试过使用 OutputCacheAttribute 之类的东西,并在响应中手动设置标头。即:
[OutputCache(Duration = 360000)]
或
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(Cache.NoAbsoluteExpiration);
但是每次我在浏览器上按 F5 时,图像仍然会加载(我正在 Chrome 和 IE 上尝试)。 (我知道它每次都会加载,因为如果我更改图像,它也会在浏览器中更改)。
我看到 HTTP 响应有一些显然应该工作的标头:
Cache-Control:public, max-age=360000
内容长度:39317
内容类型:图片/png
日期:2012 年 1 月 31 日星期二 23:20:57 GMT
到期时间:2012 年 2 月 5 日星期日 03:20:56 GMT
最后修改时间:格林威治标准时间 2012 年 1 月 31 日星期二 23:20:56
但是请求头有这个:
Pragma:no-cache
知道如何做到这一点吗?
非常感谢
【问题讨论】:
标签: asp.net-mvc http caching