2009-02-10 9 views
10

मान लीजिए मैं ASP.NET अनुप्रयोग चल रहा है कई वेब सर्वर पर एक लोड संतुलन के पीछे है:एएसपी.नेट में कैश की समाप्ति को मजबूर करने के लिए सबसे अच्छी विधि क्या है?

मैं कर सकता हूँ:

  • फोर्स OutputCache (पृष्ठ और/या नियंत्रण के स्तर) विश्व स्तर पर समाप्त करने के लिए?

  • फोर्स डेटा कैश (यानी कैश.इन्सर्ट) की समयसीमा समाप्त हो गई है?

  • केंद्रीय स्थान से एएसपी.NET कैशिंग उपयोग (कुंजी, रैम, आदि) की निगरानी करें?

एक संभावित समाधान होगा कि कैश के हर उपयोग में परिवर्तन के लिए फ़ाइल निर्भरता की जांच हो। फ़ाइल को छुआ जा सकता है जो सभी कैश की अवधि समाप्त हो जाएगा। हालांकि, इसके लिए डेवलपर्स को अपने सभी कोड में निर्भरता शामिल करने की आवश्यकता है। क्या उनका बेहतर समाधान है?

उत्तर

7

वहाँ केवल उस आइटम पर समाप्त हो रहा है समय में एक बिंदु पर परिभाषित द्वारा

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache) 

समय आधारित निर्भरता पेज OutputCache की तरह इन कैशिंग करने के लिए समय सीमा समाप्त, कई तरीके हैं।

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360)); 
Response.Cache.SetCacheability(HttpCacheability.Private) 
Response.Cache.SetSlidingExpiration(true); 

अब जब यह, निगरानी कैश की बात आती है जब तक कि वहाँ आपको बताने के लिए कैश पर एक एपीआई है, तो कोई सीधा रास्ता है।

आप निश्चित रूप से कैश, कुंजी-मूल्य जोड़े का आकलन कर सकते हैं और फिर संग्रहीत प्रत्येक आइटम के आकार की गणना कर सकते हैं। सही आसान ध्वनि नहीं है ??

तो here's अपनी कैश निगरानी को आसान बनाने के लिए। स्पष्ट रूप से कह रहा हूं कि मैंने इसे कभी भी इस्तेमाल नहीं किया है, लेकिन आप इसे अपने आवेदन में एक डीएल जोड़ने की बात कर सकते हैं।

और यहाँ (विस्तृत विवरण के लिए लिंक पढ़ें) Tek-Tips से के लिए अपने कैश कुंजी देखने कुछ,

' display contents of the ASP.NET Cache 
If Cache.Count > 0 Then  
    cc.Append("<b>Contents of the ASP.NET Cache (" _  
      & Cache.Count.ToString() & " items):</b><br />")  
    For Each item As Object In Cache  
    cc.Append("Key:'" & item.Key & "' Type:" _  
      & item.Value.GetType().ToString() & "<br />")  
    Next  
Else  
    cc.Append("<b>ASP.NET Cache is empty</b>")  
End If 
+0

aspalliance कैश के लिए लिंक के लिए धन्यवाद प्रबंधक। यह बहुत अच्छा है। – frankadelic

0

है

Response.Expires = 15 
Response.ExpiresAbsolute = Now() - 2 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "private" 
संबंधित मुद्दे