2010-03-16 24 views
5

मुझे List<object> बनाने और सूची को कैश करने और इसे जोड़ने में सक्षम होने की आवश्यकता है। मुझे इसे आसानी से उड़ाने और इसे फिर से बनाने में सक्षम होने की भी आवश्यकता है। इसे पूरा करने का एक आसान तरीका क्या है?सरल सी # एएसपी.नेट कैश कार्यान्वयन

+1

ध्यान रखें कि आपकी सूची थ्रेड सुरक्षित नहीं होगी। – dugas

उत्तर

15

कुछ इस तरह है शायद हो पाया है?

using System; 
using System.Collections.Generic; 
using System.Web; 

public class MyListCache 
{ 
    private List<object> _MyList = null; 
    public List<object> MyList { 
     get { 
      if (_MyList == null) { 
       _MyList = (HttpContext.Current.Cache["MyList"] as List<object>); 
       if (_MyList == null) { 
        _MyList = new List<object>(); 
        HttpContext.Current.Cache.Insert("MyList", _MyList); 
       } 
      } 
      return _MyList; 
     } 
     set { 
      HttpContext.Current.Cache.Insert("MyList", _MyList); 
     } 
    } 

    public void ClearList() { 
     HttpContext.Current.Cache.Remove("MyList"); 
    } 
} 

कैसे उपयोग करने के लिए के रूप में .....

// Get an instance 
var listCache = new MyListCache(); 

// Add something 
listCache.MyList.Add(someObject); 

// Enumerate 
foreach(var o in listCache.MyList) { 
    Console.WriteLine(o.ToString()); 
} 

// Blow it away 
listCache.ClearList(); 
+2

अच्छी तरह से ... सेवा योग्य। लेकिन मैं कुछ बदलाव करूँगा। मुख्य रूप से, मैं हमेशा एक वैध सूची वापस करूँगा। यदि यह अस्तित्व में नहीं है, तो कैश ["माईलिस्ट"] में जो कुछ भी है, उसे वापस करने के बजाय, एक नया खाली संग्रह बनाएं और इसे कैश करें, जो शून्य हो सकता है। – Bryan

+0

हाँ ब्रायन, यह उदाहरण काफी सरल है। - लेकिन मैंने आपके सुझाव को दिल में लिया और मेरा नमूना अपडेट किया। धन्यवाद। – jessegavin

+0

कई/सबसे वास्तविक दुनिया परिदृश्यों में आप किसी प्रकार के लगातार भंडारण में परिवर्तनों को फ्लश करना चाहते हैं। – quillbreaker

2

इस ट्यूटोरियल है कि मैं क्या उपयोगी

यहां नमूने

List<object> list = new List<Object>(); 

Cache["ObjectList"] = list;     // add 
list = (List<object>) Cache["ObjectList"]; // retrieve 
Cache.Remove("ObjectList");     // remove 
0

"Tracing and Caching Provider Wrappers for Entity Framework" की कैशिंग भागों, जबकि सरल नहीं, अभी भी कुछ उपयोगी चीजें कैशिंग के साथ के बारे में सोचना की एक बहुत अच्छी समीक्षा कर रहे हैं।

विशेष रूप से, दो वर्गों InMemoryCache और AspNetCache और उनके संबद्ध परीक्षण:

क्या सवाल किया था के समान, आप लपेट सकता है HttpRuntime.Cache या के कार्यान्वयन मेंया HttpContext.Current.Cache

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