我有一个应用程序,其中每个页面都使用一组存储在数据库中的数据。为了避免每次需要数据时都调用数据库,我决定将其放入HttpRuntime.Cache
. 我正在调用数据库并将数据缓存在我的 Controller.cs 文件的构造函数中,这是唯一使用此数据的地方。
上述方法有效,但我想知道这是否是加载缓存的正确位置/方式?
此外,每个用户的数据都是相同的,并且每年可能会更改几次。
我有一个应用程序,其中每个页面都使用一组存储在数据库中的数据。为了避免每次需要数据时都调用数据库,我决定将其放入HttpRuntime.Cache
. 我正在调用数据库并将数据缓存在我的 Controller.cs 文件的构造函数中,这是唯一使用此数据的地方。
上述方法有效,但我想知道这是否是加载缓存的正确位置/方式?
此外,每个用户的数据都是相同的,并且每年可能会更改几次。
缓存数据和使用缓存数据是两个不同的问题。假设你有这个接口来获取数据:
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.