У меня есть метод action, который возвращает файл и имеет только один аргумент (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
Content-Length: 39317
Content-Type: изображение /PNG
Дата: Вт, 31 Янв 2012 23:20:57 GMT
Истекает: Вс, 05 Фев 2012 03:20:56 GMT
Last-Modified: Вт, 31 Янв 2012 23:20:56 GMT
Но заголовки запроса имеют следующее:
Pragma: нет кэша
Любая идея о том, как это сделать?
Спасибо большое