Jika gambarnya tidak terlalu besar, dan jika ada kemungkinan besar Anda akan sering menggunakan kembali gambar itu, dan jika Anda tidak memiliki terlalu banyak gambar, dan jika gambarnya tidak rahasia (artinya tidak besar. kesepakatan jika satu pengguna berpotensi melihat gambar orang lain) ...
Banyak "jika" ada di sini, jadi kemungkinan besar ini adalah ide yang buruk:
Anda dapat menyimpan byte gambar Cache
untuk waktu yang singkat, dan membuat tag gambar mengarah ke metode tindakan, yang pada gilirannya membaca dari cache dan mengeluarkan gambar Anda. Ini akan memungkinkan browser untuk menyimpan gambar dengan benar.
// 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");
}
Ini memiliki manfaat tambahan (atau apakah itu kruk?) Untuk bekerja di browser lama, di mana gambar sebaris tidak berfungsi di IE7 (atau IE8 jika lebih besar dari 32kB).