2011-06-30 12 views
6

मेरे पास कुछ महंगा कोड कैश करने के लिए निम्न कोड है।यदि मैं स्पष्ट समाप्ति नहीं करता हूं तो डिफ़ॉल्ट रूप से सामान httpcache में रहते हैं?

private MyViewModel GetVM(Params myParams) 
    { 
     string cacheKey = myParams.runDate.ToString(); 
     var cacheResults = HttpContext.Cache[cacheKey] as MyViewModel ; 
     if (cacheResults == null) 
     { 
      cacheResults = RunExpensiveCodeToGenerateVM(myParams); 
      HttpContext.Cache[cacheKey] = cacheResults; 
     }     
    return cacheResults; 
    } 

यह कैश में हमेशा के लिए रहेगा? जब तक सर्वर रीबूट या स्मृति से बाहर नहीं चला जाता है?

उत्तर

5

यह कैश में हमेशा के लिए रहेगा?

यह आपके द्वारा उपयोग किए जा रहे विशेष कैश प्रदाता पर निर्भर करेगा। उदाहरण के लिए यदि आप डिफ़ॉल्ट इन-मेमोरी कैश का उपयोग कर रहे हैं तो यह समाप्त हो सकता है अगर सर्वर मेमोरी पर कम चलना शुरू करता है या यदि एप्लिकेशन पूल रीसाइक्लिंग किया जाता है। लेकिन यदि आप कुछ अन्य कैश प्रदाता का उपयोग कर रहे हैं, उदाहरण के लिए memcached या AppFactory जैसे वितरित कैश, यह विशेष कार्यान्वयन पर निर्भर करेगा।

अंगूठे का नियम कभी यह नहीं मानना ​​है कि कुछ कैश के अंदर है क्योंकि आपने पहले इसे संग्रहीत किया था। हमेशा कैश में आइटम की उपस्थिति की जांच करें और यदि मौजूद नहीं है तो उसे कैश में फिर से स्टोर करें और स्टोर करें।

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

  • कोई संबंधित समस्या नहीं^_^