यदि छवि इतनी बड़ी नहीं है, और यदि कोई अच्छा मौका है तो आप अक्सर छवि का फिर से उपयोग करेंगे, और यदि आपके पास उनमें से बहुत सारे नहीं हैं, और यदि चित्र गुप्त नहीं हैं (तो इसका अर्थ है कि यह कोई बड़ा नहीं है सौदा करें यदि एक उपयोगकर्ता संभावित रूप से किसी अन्य व्यक्ति की छवि देख सकता है ...)
"अगर" यहाँ बहुत है, तो एक अच्छा मौका है यह एक बुरा विचार है:
आप 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 यदि 32kB से बड़ी) में काम नहीं करती हैं।