缓存从 Web 服务 MVC 返回的数据
本文关键字:返回 数据 MVC 服务 Web 缓存 | 更新日期: 2023-09-27 18:30:15
我正在从Web服务中提取数据,通常在我提取数据后,数据不会更改。 此数据将在不同的模型对象中引用。 我想知道在 MVC 中缓存它的最佳方法是什么。 我在考虑模型类中的静态字典,它将使用此数据,但多个线程可以读取和写入它。 有什么建议吗?
我认为
你的想法很好(无论如何,这就是我到目前为止一直在做的事情)。
唯一的问题是你需要避免并发访问你的字典,所以只需将其设为私有,并让访问器方法使用锁进行读取和写入(将 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 或更高版本)。
这显然不涉及缓存老化。但在我看来,你自己控制着这一切。