我从web服务中提取数据,一般在我将数据拉入后,数据不会改变。该数据将在不同的模型对象中引用。我想知道在MVC中缓存它的最佳方法是什么。我在思考模型类中的静态字典,它将使用这些数据,但多个线程可以读取和写入它。有什么建议吗?
答案 0 :(得分: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或更高版本) 这显然不涉及缓存老化。但在我看来,你自己就是在控制它。