1

我有一个应用程序,其中每个页面都使用一组存储在数据库中的数据。为了避免每次需要数据时都调用数据库,我决定将其放入HttpRuntime.Cache. 我正在调用数据库并将数据缓存在我的 Controller.cs 文件的构造函数中,这是唯一使用此数据的地方。

上述方法有效,但我想知道这是否是加载缓存的正确位置/方式?

此外,每个用户的数据都是相同的,并且每年可能会更改几次。

4

1 回答 1

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();
    }
}

You can now use the same interface and not worry if the data that you're use in the controller is cached or not.

于 2012-07-02T02:31:23.803 回答