Якщо зображення не таке велике, і якщо є хороший шанс, ви будете повторно використовувати зображення часто, і якщо у вас їх не так багато, і якщо зображення не є секретними (це означає, що це не велике угоди, якщо один користувач потенційно може бачити зображення іншої людини) ...
Багато "якщо" тут, тож є хороший шанс, що це погана ідея:
Ви можете зберігати в байтах зображення Cache
на короткий час і робити тег зображення, спрямований на метод дії, який, в свою чергу, читає з кеша і випилює ваше зображення. Це дозволить браузеру належним чином кешувати зображення.
// In your original controller action
HttpContext.Cache.Add("image-" + model.Id, model.ImageBytes, null,
Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(1),
CacheItemPriority.Normal, null);
// In your view:
<img src="@Url.Action("GetImage", "MyControllerName", new{fooId = Model.Id})">
// In your controller:
[OutputCache(VaryByParam = "fooId", Duration = 60)]
public ActionResult GetImage(int fooId) {
// Make sure you check for null as appropriate, re-pull from DB, etc.
return File((byte[])HttpContext.Cache["image-" + fooId], "image/gif");
}
Це має додаткову перевагу (чи це сутичка?) Роботи в старих браузерах, де вбудовані зображення не працюють в IE7 (або IE8, якщо більше 32 кБ).