2009-08-25 11 views
5

हम कुछ यूआरएल के लिए टाइमस्टैम्प जोड़ने के साथ प्रयोग कर रहे हैं ताकि चीजों को कैश कर सकें, लेकिन जब वे बदलते हैं तो उन्हें ताज़ा कर दें।फ़ाइल गुणों को पढ़ने में कितना महंगा है? .NET

DateTime ts = File.GetLastWriteTime(absPath); 

जहां absPath एक यूआरएल की एक MappedPath है: हम कोड है कि इस करने पर निर्भर करता है। इसलिए जब भी हम फ़ाइल के लिंक को पूरा करते हैं तो वेब सर्वर इस फ़ाइल के अंतिम लेखन समय की जांच करेगा। किंडा मुझे इच्छाएं देता है - क्या यह चाहिए?

उत्तर

7

आपको प्रदर्शन-परीक्षण करना चाहिए, लेकिन मुझे संदेह है कि यह फ़ाइल के अस्तित्व का परीक्षण करने से कहीं अधिक महंगा है (उदाहरण के लिए कि यह केवल पढ़ने योग्य है), और वास्तव में फ़ाइल खोलने से निश्चित रूप से कम महंगा है।

यदि (परीक्षण के बाद) यह तय करता है कि यह एक समस्या है, तो आप GetLastWriteTime पर अपनी कॉल कैश भी कर सकते हैं (उदा। किसी भी फ़ाइल के लिए प्रत्येक 5 सेकंड में इसे एक से अधिक बार कॉल न करें)।

इसके अलावा, मैंने इसका कभी भी उपयोग नहीं किया है, लेकिन यदि कैशिंग एक चिंता है तो मुझे आशा है कि आपने कुछ विशेषज्ञों को Squid जैसे अपने स्वयं के रोलिंग के बजाय इसके कार्यान्वयन का प्रतिनिधि माना है।

0

लिंक उत्पन्न होने पर अतिरिक्त छोटी डिस्क I/O की आवश्यकता होगी। यदि आप कम समय में कई यूआरएल बनाते हैं तो यह एक बाधा हो सकती है। कोई भी यह सुनिश्चित करने के लिए कह सकता है कि इससे आपके परिदृश्य पर असर पड़ेगा - आपको वास्तव में मापने और देखने की आवश्यकता है कि यह कोई मुद्दा होगा या नहीं।

0

या यदि आप इसके बारे में चिंतित हैं, तो इसे एक मिनट के लिए कैश क्यों न करें?

1

अनिवार्य रूप से, "कितना महंगा" के आपके प्रश्न के तीन जवाब हैं।

  1. बहुत महंगा - आपने इसका परीक्षण किया है और सिस्टम को प्रयोग करने योग्य बनाने के लिए कुछ बदलना है।
  2. स्वीकार्य - आपने इसका परीक्षण किया है और यह बहुत अच्छा नहीं है, लेकिन यह
  3. का उपयोग करने के लिए पर्याप्त तेज़ है - इसके बजाय आपने इसका परीक्षण किया है और प्रदर्शन पर कोई उल्लेखनीय प्रभाव नहीं है।

हम वास्तव में आपके लिए प्रश्न का उत्तर नहीं दे सकते हैं, इसलिए आपको इसे आजमाने की आवश्यकता होगी। यदि आप तय करते हैं कि यह बहुत महंगा था या यह स्वीकार्य से इसे सस्ता करने के लिए आपके समय के लायक है, तो सवाल उठाने के लिए प्रश्नों को कैसे गति दें।

2

मैंने यह कोशिश नहीं की है, लेकिन आपका प्रश्न उस परिस्थिति से प्रासंगिक है जिसके बारे में मैं सोच रहा हूं।

आपने यह संकेत नहीं दिया कि डेटा क्या बदल रहा है? डेटाबेस, एक्सएमएल डेटा इत्यादि

एएसपी.नेट कैशिंग विभिन्न निर्भरताओं के आधार पर कैश को अद्यतन करने का समर्थन करता है।

फ़ाइल-आधारित निर्भरता, समय-आधारित निर्भरता, और कुंजी-आधारित निर्भरता के अनुभागों में इस आलेख को देखें।

"निर्भरता हमें फ़ाइलों में परिवर्तनों, अन्य कैश कुंजी में परिवर्तन, या समय पर एक निश्चित बिंदु पर कैश के भीतर किसी विशेष आइटम को अमान्य करने की अनुमति देती है। आइए इन निर्भरताओं में से प्रत्येक को देखें।"

यहाँ लेख है:

http://msdn.microsoft.com/en-us/library/ms972379.aspx

धन्यवाद

जो

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