我使用webservice从其他应用程序获取用户列表。我收到了所有信息。
List<User> users = ws.SelectUsers();
我想在控制器操作之间存储这个用户列表,这样我就不想每次都为他们的角色和其他信息点击Web服务。
使用C#和MVC
执行此操作的最佳方法是什么?我
答案 0 :(得分:3)
您可以使用MemoryCache存储内容。以下示例将用户在缓存中存储一小时。如果您需要按用户存储它,您可以稍微更改它,以便使用用户ID或其他内容生成缓存键(&#34;以下示例中的用户&#34;)。
MemoryCache cache = MemoryCache.Default;
string baseCacheKey = "Users";
public void DoSomethingWithUsers(int userId)
{
var cacheKey = baseCacheKey + userId.ToString();
if (!cache.Contains(cacheKey))
{
RefreshUserCache(userId);
}
var users = cache.Get(cacheKey) as List<User>
// You can do something with the users here
}
public static RefreshUserCache(int userId)
{
var users = ws.SelectUsers();
var cacheItemPolicy = new CacheItemPolicy();
cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddHours(1);
var cacheKey = baseCacheKey + userId.ToString();
cache.Add(cacheKey, users , cacheItemPolicy);
}
编辑:如果您确实想要为每个用户执行此选项,我已经包含了userId的选项