大家好我有一个List,我希望为所有用户显示相同的列表而不在我的数据库中进行其他查询。 在论坛上搜索我发现OutPutCache是我可以遵循的最佳方式,但我真的不明白我该怎么做。
[编辑]
OutPutCache是最好的方法吗?
答案 0 :(得分:1)
你在这里走得太远;如果您只有一个List<T>
想要在内存中保留一段时间,那么就不需要输出缓存。输出缓存是指您希望缓存整个呈现的页面以便在不调用控制器的情况下发送给用户。
您只需要通过共享变量或普通旧缓存将对象保留在内存中。
public class MyListFetcher<T>
{
public List<T> FetchData()
{
List<T> obj = HttpRuntime.Cache["myObjectCacheKey"] as List<T>;
if(obj != null)
return obj;
obj = FetchDataFromDatabase();
HttpRuntime.Cache.Insert("myObjectCacheKey", obj, null, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
// Inserts the item and keeps it there for five minutes; then the cache will be invalidated. No sliding expiration
return obj;
}
protected List<T> FetchDataFromDatabase()
{
// Your DB fetch code
}
}
答案 1 :(得分:0)
控制器方法的[OutputCache]属性将缓存查询结果 - 如果使用VaryByParam参数,这将缓存该参数的结果,从而减少从控制器方法调用数据库的次数。 / p>