缓存从 Web 服务 MVC 返回的数据

本文关键字:返回 数据 MVC 服务 Web 缓存 | 更新日期: 2023-09-27 18:30:15

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

缓存从 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 或更高版本)。
这显然不涉及缓存老化。但在我看来,你自己控制着这一切。