FileContentResult - предотвратить кеширование изображения в браузере - PullRequest
3 голосов
/ 31 августа 2011

Я возвращаю изображение (png) из вызова метода действия, и я хотел бы остановить кэширование изображения браузером.

return File(reply, "image/png", "{0}_Graph".FormatWith(ciName));

Я попробовал все обычные вещи, добавив массив различных заголовков к ответу файла, и ни один из них, похоже, не работает для меня.

В основном мой метод действия возвращает график, который генерируется на сервере и может отличаться от момента к моменту. Я использую объект Javascripts Image на стороне клиента и устанавливаю его src для моего метода действия.

var image = new Image();
image.src = baseUrl + params;

Каждый раз, когда запрашивается один и тот же URL, сервер не срабатывает.

Я могу добавить случайное число и т. Д. К строке запроса, однако мне интересно, есть ли лучший подход.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Поскольку это MVC, используйте атрибут MVC OutputCache.См. Мой ответ по адресу: Отключить кэш браузера для всего веб-сайта ASP.NET

Также не забудьте очистить кэш, прежде чем пытаться это сделать.Если он уже кешируется, результаты могут быть противоречивыми.

1 голос
/ 31 августа 2011

Вы можете установить соответствующие заголовки HTTP для предотвращения кэширования (я не знаю, как это сделать в ASP.NET, но я думаю, что это будет что-то вроде HTTP.Response.setHeader("foo", "bar"):

"Pragma-directive: no-cache"
"Cache-directive: no-cache"
"Cache-control: no-cache"
"Pragma: no-cache"
"Expires: 0"

или используйте текущую временную метку, если вам не нравится решение со случайными числами:

image.src = baseUrl + params + '&t=' + new Date().getTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...