如何在MVC應(yīng)用程序中緩存數(shù)據(jù)我在MVC應(yīng)用程序中閱讀了很多關(guān)于頁面緩存和部分頁面緩存的信息。但是,我想知道您將如何緩存數(shù)據(jù)。在我的場景中,我將使用LINQto實(shí)體(實(shí)體框架)。在第一次調(diào)用GetNames(或任何方法)時,我想從數(shù)據(jù)庫中獲取數(shù)據(jù)。我希望將結(jié)果保存在緩存中,并在第二次調(diào)用時使用緩存版本(如果存在的話)。有人能給我們舉一個例子,說明它是如何工作的,應(yīng)該在什么地方實(shí)現(xiàn)(模型?)如果能成功的話。我在傳統(tǒng)的ASP.NET應(yīng)用程序中看到過這種情況,通常用于非常靜態(tài)的數(shù)據(jù)。
3 回答

炎炎設(shè)計
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
using System.Runtime.Caching; public class InMemoryCache: ICacheService{ public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class { T item = MemoryCache.Default.Get(cacheKey) as T; if (item == null) { item = getItemCallback(); MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10)); } return item; }}interface ICacheService{ T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;}
用法:
cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));
例子:
var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())
添加回答
舉報
0/150
提交
取消