2010-11-28 11 views
12

मैं अनुरोध करता है कि अपनी वेब कॉन्फ़िग फ़ाइलWebConfigurationManager.AppSettings का कैशिंग?

variable = WebConfigurationManager.AppSettings["BLAH"] 

पढ़ा हर बार डिस्क से WebConfigurationManager.AppSettings पढ़ा करते हैं, या यह स्मृति में कैश किया गया है की एक बहुत कुछ है?

यदि यह हर बार डिस्क से पढ़ा जाता है तो मुझे लगता है कि मुझे वैरिएबल को एक स्थिर चर में स्थानांतरित करने की आवश्यकता होगी ताकि मेरे ऐप प्रदर्शन को बेहतर बनाया जा सके।

उत्तर

17

कॉन्फ़िगरेशन सेटिंग्स मेमोरी में कैश की जाती हैं और हर बार जब आप इस फ़ंक्शन को कॉल करते हैं तो web.config को पार्स नहीं किया जाता है।

+1

+1 यहां दस्तावेज़ों का एक लिंक है। [ये सदस्य केवल-पढ़ने के संचालन करते हैं, कॉन्फ़िगरेशन के एक कैश किए गए उदाहरण का उपयोग करते हैं, और मल्टीथ्रेड जागरूक हैं।] (Http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx#remarksToggle) – Craig

3

मैं सिर्फ इस विषय पर शोध कर रहा था। और यह सच है कि कॉन्फ़िगरेशन सेटिंग्स मेमोरी में कैश की जाती हैं।

हालांकि, आप स्थिर वैरिएबल में मूल्यों को संग्रहीत करके प्रदर्शन लाभ देख सकते हैं (और जैसा कि here वर्णित है)। ऐसा इसलिए है क्योंकि AppSettings संग्रह एक NameValueCollection है। और इसलिए जब भी आप ऐपसेटिंग का संदर्भ लेते हैं तो उसे उस संग्रह को खोजना होता है जो ओ (एन) ऑपरेशन है।

हालांकि, यह शायद एक दुर्लभ बात है कि यह कभी भी आपके आवेदन की बाधा होगी। लेकिन कोई ऐपसेटिंग में एक ही मान का संदर्भ देने वाले तंग पाश के साथ एक परिदृश्य की कल्पना कर सकता है, जहां AppSettings संग्रह बहुत बड़ा है। उस स्थिति में आप कुछ फ़ैशन में मूल्य को कैश भी कर सकते हैं, भले ही यह आपके लूप को शुरू करने से पहले स्थानीय चर में संग्रहीत कर रहा हो।

संबंधित मुद्दे