हम एक डेटा संचालित ASP.NET वेबसाइट जो डेटा कैशिंग के लिए मानक पैटर्न (MSDN से यहाँ अनुकूलित) प्रयोग हो रहा है है:क्या कोई एएसपीनेट डेटा कैश कैश प्रविष्टियों की पृष्ठभूमि आबादी का समर्थन करता है?
public DataTable GetData()
{
string key = "DataTable";
object item = Cache[key] as DataTable;
if((item == null)
{
item = GetDataFromSQL();
Cache.Insert(key, item, null, DateTime.Now.AddSeconds(300), TimeSpan.Zero;
}
return (DataTable)item;
}
इस के साथ दिक्कत यह है कि GetDataFromSQL() करने के लिए कॉल महंगा है और साइट का उपयोग काफी अधिक है। तो हर पांच मिनट, जब कैश गिरता है, साइट बहुत चिपचिपा हो जाती है, जबकि नए अनुरोधों को पुनर्प्राप्त करने के लिए बहुत से अनुरोध प्रतीक्षा कर रहे हैं।
हम वास्तव में क्या करना चाहते हैं पुराने डेटा के लिए चालू रहना है जबकि पृष्ठभूमि में समय-समय पर डेटा को फिर से लोड किया जाता है। (तथ्य यह है कि कोई व्यक्ति छह मिनट का डेटा देख सकता है, यह एक बड़ा मुद्दा नहीं है - डेटा समय संवेदनशील नहीं है)। यह ऐसा कुछ है जिसे मैं स्वयं लिख सकता हूं, लेकिन यह जानना उपयोगी होगा कि क्या कोई वैकल्पिक कैशिंग इंजन (मुझे वेग, memcache जैसे नाम पता हैं) इस तरह के परिदृश्य का समर्थन करते हैं। या क्या मुझे मानक एएसपी.नेट डेटा कैश के साथ कुछ स्पष्ट चाल याद आ रही है?
अपने GetDataFromSQL कॉल को प्रोफ़ाइल करना और यह पता लगाना उपयोगी हो सकता है कि इसमें से कौन सा भाग * धीमा है। यह अत्यधिक संभावना है कि यह पारिवारिक सिद्धांत का पालन करता है (यानी आपकी मंदी का 80% कोड के 20% के कारण होता है)। इसके बाद आप अपने प्रयासों को उस 10% या 20% कोड पर केंद्रित कर सकते हैं जो मंदी के बहुमत का कारण बन रहा है। –
प्रोफाइलिंग आपको डेटा उपयोग के पैटर्न में बेहतर अंतर्दृष्टि प्रदान करेगी। इससे आपको केवल उन चीजों को कैश करने की अनुमति मिलनी चाहिए जो ज्यादा नहीं बदलती हैं। अन्यथा, आप पृष्ठभूमि में भरने वाले कैश प्रविष्टियों में बहुत समय व्यतीत कर सकते हैं जो शायद ही कभी उपयोग किया जाता है, जो वास्तव में प्रदर्शन को कम कर सकता है। –
इन विचारों के लिए धन्यवाद। हालांकि: ए) सभी प्रकार के पृष्ठभूमि कारण हैं जिसका मतलब है कि इस पल के लिए कॉल महंगे रहेंगे और बी) मुझे लगता है कि कॉलिंग की कीमत पर ध्यान दिए बिना पृष्ठभूमि-लोडिंग पैटर्न वास्तव में इन परिस्थितियों में सबसे अच्छा है। – Yellowfog