我有一个 ASP.NET MVC 3 应用程序,它基本上只是一组 Web 服务。这些 Web 服务由一组控制器操作公开。每个控制器操作都会查询我的数据库。因为我的数据很少发生变化,而且陈旧的数据也不用担心,所以我想我应该实现一些缓存来提高性能。我的目标是:
- 切勿缓存对用户的响应。
- 缓存数据库记录长达 24 小时。如果已经过去24小时,则再次访问数据库。
那有意义吗?我知道如何防止缓存响应。我只是使用以下内容:
HttpContext.Response.Cache.SetCacheability(cacheability)
但是,我不确定如何将数据库记录缓存在内存中长达 24 小时。有人对如何做到这一点有任何建议吗?我什至不知道该去哪里寻找。
谢谢
您可以使用System.Runtime.Caching
命名空间(或 ASP.NET 缓存,但这较旧,只能在 Web 应用程序中使用)。
这是一个示例函数,您可以使用它来包装当前的数据检索机制。您可以更改 MemoryCache.Add 中的参数来控制缓存的数量,但您在上面请求了 24h。
using System.Runtime.Caching; // At top of file
public IEnumerable<MyDataObject> GetData()
{
IEnumerable<MyDataObject> data = MemoryCache.Default.Get(MYCACHEKEY) as IEnumerable<MyDataObject>;
if (data == null)
{
data = // actually get your data from the database here
MemoryCache.Default.Add(MYCACHEKEY, data, DateTimeOffset.Now.AddHours(24));
}
return data;
}
正如 @Bond 所提到的,如果您缓存的数据可能在 24 小时内发生变化,您可能还希望考虑使用 SQL 缓存依赖项。如果它非常静态,那么这将按照您的要求进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)