2012-10-25 22 views
10

मेरे पास यह एमवीसी दृश्य है जिसमें छवियों की एक सूची है, ये छवियां गतिशील हैं इसलिए वे नियंत्रक से आती हैं।छवियों की सेवा करते समय मेरा एमवीसी नियंत्रक धीमा क्यों है

[OutputCache(Duration = 0, NoStore = true, Location = OutputCacheLocation.None)] 
    public ActionResult RenderImage(int id) 
    { 
    return File(@"C:\Users\Pictures\myimage.png", "image/png"); 
    } 

मैं चीजों को मेरी बात साबित करने के लिए ग्रहण कर रही हूँ: चीजों को आसान बनाने के इस नियंत्रक केवल इस कोड है। एक अलग आईडी के साथ

मेरा विचार अनुरोध 8 छवियों सभी, और समय भयानक हैं:

timings

कभी कभी यह कुछ छवियों (जो सभी एक ही कर रहे हैं) के लिए और प्रत्येक पर तेज है ताज़ा यह अलग है, इसमें एक पैटर्न नहीं मिल रहा है।

एप्लिकेशन IIS में होस्ट किया गया है और सर्वर लॉग में timetaken यह सर्वर उस समय तक खा रहा है है दिखाता है:

किसी

enter image description here

है एक सुराग क्यों ऐसा होता है? अगर मैं व्यक्तिगत रूप से छवियों का अनुरोध करता हूं (पृष्ठ में नहीं) यह हमेशा तेज़ होता है।

+1

एक सामान्य समस्या - जो यहां सबकुछ समझाती नहीं है - यह है कि ब्राउज़र छवियों को पुनर्प्राप्त करने के लिए दो या चार समांतर कनेक्शन का उपयोग करता है लेकिन एएसपी.NET सभी को ब्लॉक करेगा क्योंकि सत्र स्थिति तक पहुंच एक विशेष लॉक की आवश्यकता है। यदि आपको छवियों के सत्र सत्र तक पहुंच की आवश्यकता नहीं है, तो इसे घोषित करने और अनन्य लॉक से छुटकारा पाने का एक तरीका है। – Codo

+0

यह डिस्क पर I/O हो सकता है। आप सी: \ उपयोगकर्ता \ चित्र \ myimage.png की सामग्री को बाइट में लोड करने का प्रयास कर सकते हैं [], स्मृति में संग्रहीत करना और उसे वापस लौटना, यह देखने के लिए कि क्या समस्या है (जाहिर है कि 'उत्पादन' ठीक नहीं है, लेकिन यह डिबगिंग में मदद कर सकता है) – Alex

+0

एक संभावित कारण लॉक होने की विधि हो सकती है। इसे बहु थ्रेडेड बनाने का प्रयास करें और देखें कि यह आपकी मदद करता है या नहीं? –

उत्तर

3

बाहर कर देता है यह मेरे मामले में समाधान है:

[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)] 

user1394965 जवाब के रूप में यह सुझाव दिया .. लेकिन उनके जवाब चला गया है ?!

+0

अक्षम बीटीडब्ल्यू के बजाय रीडोनली भी मदद करेगा – Flores