猿问

如何在MVC应用程序中缓存数据

如何在MVC应用程序中缓存数据

我在MVC应用程序中阅读了很多关于页面缓存和部分页面缓存的信息。但是,我想知道您将如何缓存数据。

在我的场景中,我将使用LINQto实体(实体框架)。在第一次调用GetNames(或任何方法)时,我想从数据库中获取数据。我希望将结果保存在缓存中,并在第二次调用时使用缓存版本(如果存在的话)。

有人能给我们举一个例子,说明它是如何工作的,应该在什么地方实现(模型?)如果能成功的话。

我在传统的ASP.NET应用程序中看到过这种情况,通常用于非常静态的数据。


阿晨1998
浏览 720回答 3
3回答

炎炎设计

下面是我使用的一个简单的缓存帮助类/服务:using&nbsp;System.Runtime.Caching;&nbsp;&nbsp;public&nbsp;class&nbsp;InMemoryCache:&nbsp;ICacheService{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;T&nbsp;GetOrSet<T>(string&nbsp;cacheKey,&nbsp;Func<T>&nbsp;getItemCallback)&nbsp;where&nbsp;T&nbsp;:&nbsp;class &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;item&nbsp;=&nbsp;MemoryCache.Default.Get(cacheKey)&nbsp;as&nbsp;T; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(item&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=&nbsp;getItemCallback(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryCache.Default.Add(cacheKey,&nbsp;item,&nbsp;DateTime.Now.AddMinutes(10)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;item; &nbsp;&nbsp;&nbsp;&nbsp;}}interface&nbsp;ICacheService{ &nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;GetOrSet<T>(string&nbsp;cacheKey,&nbsp;Func<T>&nbsp;getItemCallback)&nbsp;where&nbsp;T&nbsp;:&nbsp;class;}用法:cacheProvider.GetOrSet("cache&nbsp;key",&nbsp;(delegate&nbsp;method&nbsp;if&nbsp;cache&nbsp;is&nbsp;empty));缓存提供程序将检查缓存中是否有名为“cache id”的内容,如果没有,它将调用委托方法来获取数据并将其存储在缓存中。例子:var&nbsp;products=cacheService.GetOrSet("catalog.products",&nbsp;()=>productRepository.GetAll())
随时随地看视频慕课网APP
我要回答