मेरे पास यह एमवीसी दृश्य है जिसमें छवियों की एक सूची है, ये छवियां गतिशील हैं इसलिए वे नियंत्रक से आती हैं।छवियों की सेवा करते समय मेरा एमवीसी नियंत्रक धीमा क्यों है
[OutputCache(Duration = 0, NoStore = true, Location = OutputCacheLocation.None)]
public ActionResult RenderImage(int id)
{
return File(@"C:\Users\Pictures\myimage.png", "image/png");
}
मैं चीजों को मेरी बात साबित करने के लिए ग्रहण कर रही हूँ: चीजों को आसान बनाने के इस नियंत्रक केवल इस कोड है। एक अलग आईडी के साथ
मेरा विचार अनुरोध 8 छवियों सभी, और समय भयानक हैं:
कभी कभी यह कुछ छवियों (जो सभी एक ही कर रहे हैं) के लिए और प्रत्येक पर तेज है ताज़ा यह अलग है, इसमें एक पैटर्न नहीं मिल रहा है।
एप्लिकेशन IIS में होस्ट किया गया है और सर्वर लॉग में timetaken यह सर्वर उस समय तक खा रहा है है दिखाता है:
किसीहै एक सुराग क्यों ऐसा होता है? अगर मैं व्यक्तिगत रूप से छवियों का अनुरोध करता हूं (पृष्ठ में नहीं) यह हमेशा तेज़ होता है।
एक सामान्य समस्या - जो यहां सबकुछ समझाती नहीं है - यह है कि ब्राउज़र छवियों को पुनर्प्राप्त करने के लिए दो या चार समांतर कनेक्शन का उपयोग करता है लेकिन एएसपी.NET सभी को ब्लॉक करेगा क्योंकि सत्र स्थिति तक पहुंच एक विशेष लॉक की आवश्यकता है। यदि आपको छवियों के सत्र सत्र तक पहुंच की आवश्यकता नहीं है, तो इसे घोषित करने और अनन्य लॉक से छुटकारा पाने का एक तरीका है। – Codo
यह डिस्क पर I/O हो सकता है। आप सी: \ उपयोगकर्ता \ चित्र \ myimage.png की सामग्री को बाइट में लोड करने का प्रयास कर सकते हैं [], स्मृति में संग्रहीत करना और उसे वापस लौटना, यह देखने के लिए कि क्या समस्या है (जाहिर है कि 'उत्पादन' ठीक नहीं है, लेकिन यह डिबगिंग में मदद कर सकता है) – Alex
एक संभावित कारण लॉक होने की विधि हो सकती है। इसे बहु थ्रेडेड बनाने का प्रयास करें और देखें कि यह आपकी मदद करता है या नहीं? –