带有List<>的ObjectCache第一次通话时放慢速度

时间:2016-03-16 14:11:28

标签: c# .net

我有一个webapi(asp.net),我将一个List放在ObjectCache

List<User>data = GetUser();
ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30);
cache.Add("userList", data, policy);

我在类中检索List:

List<User> userList = new List<User>();
ObjectCache cache = MemoryCache.Default;
List<User> cacheList = List<User>)cache.Get("userList");

if(cacheList != null){
   userList = cacheList;
} else{
   userList = GetUserListAndCacheTheList();
}

当我现在在用户列表上进行任何linq查询时,它确实从cacheList获取了它的内容,这需要花费很多时间。但只是在第一次,如果我再次通过webapi网址调用该类,任何linq查询都很快。

//Why 
userlist = userList.Where(user => user != null ).toList<User>();

似乎有些东西被重新计算了,但是不知道是什么或为什么......有人可以解释这种行为吗?

0 个答案:

没有答案