我有一个应用程序,其中每个页面都使用存储在数据库中的一组数据。为了避免每次需要数据时都调用数据库,我决定将其放在HttpRuntime.Cache
中。我正在调用DB并在构造函数中为我的Controller.cs文件缓存数据,这是这个数据的唯一使用位置。
上面的方法有效,但我想知道这是否是加载缓存的正确位置/方式?
此外,每个用户的数据都是相同的,并且每年可能会改变几次。
答案 0 :(得分:2)
缓存数据和使用缓存数据是两个不同的问题。假设您有此接口来获取数据:
public interface IDataRepository
{
List<Data> GetData();
}
你可以有两个实现,一个从数据库中获取数据,另一个只是充当代理并在必要时缓存数据:
public class DataRepository : IDataRepository
{
public virtual List<Data> GetData()
{
//Hit the database and get the data
}
}
public class CachedDataRepository : DataRepository, IDataRepository
{
public override List<Data> GetData()
{
if(!IsCachedAlready())
{
var data = base.GetData();
AddToCache(data);
}
return DataFromCache();
}
}
您现在可以使用相同的界面,如果您在控制器中使用的数据是否被缓存,则无需担心。