1

我正在从 Web 服务中提取数据,并且通常在我将其拉入之后,一旦数据不会改变。该数据将在不同的模型对象中引用。我想知道在 MVC 中缓存它的最佳方法是什么。我正在考虑模型类中的一个静态字典,它将使用这些数据,但多个线程可能正在读取和写入它。有什么建议么?

4

1 回答 1

0

我认为你的想法非常好(这就是我迄今为止一直在做的事情)。
唯一的问题是您需要避免对字典的并发访问,因此只需将其设为私有并让访问器方法对读取和写入都使用锁(将 K 和 V 替换为您自己的类型):

public class CacheClass {
    private static object DictLock = new Object();
    private static Dictionary<K, V> CachedData;

    public static V ReadDictionary(K key) {
         V temp;
         lock (DictLock) {
              temp = CachedData[key];
         }

         return temp;
    }
    public static void SetDictionaryValue(K key, V value) {
         lock (DictLock) {
             CachedData.Add(key, value);
         }
    }
}  

其他替代方法涉及使用ConcurrentDictionary(.NET 4 或更高版本)。
这显然不涉及缓存老化。但在我看来,你似乎是在自己控制它。

于 2012-04-08T02:03:09.287 回答