如何在缓存中存储数据表以重用它?

Kis*_*jar 7 c# asp.net caching

在我的应用程序中,我使用了通用处理程序处理请求.

我想要机制,如果第一次请求来到处理程序,它向服务器发出请求然后缓存整个数据表,所以对于即将到来的请求,如果下一个请求的产品代码存在于缓存的数据表中,它不应该去服务器获取数据再次..应该只检查数据表的数据.

所以你能解释一下我如何在缓存中设置数据表.

Jam*_*unt 24

沿着这些方向的东西?

public DataTable GetDataTableFromCacheOrDatabase()
{
   DataTable dataTable = HttpContext.Current.Cache["secret key"] as DataTable;
   if(dataTable == null)
   {
       dataTable = GetDataTableFromDatabase();
       HttpContext.Current.Cache["secret key"] = dataTable;
   }
   return dataTable;
}
Run Code Online (Sandbox Code Playgroud)

如果数据表发生更改,您将需要一些机制来从缓存中刷新数据表.例如,您可以使用SqlCacheDependency.

根据要求,要在添加表后一小时清除缓存,您将执行以下操作:

HttpContext.Current.Cache.Insert("secret key", dataTable, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);
Run Code Online (Sandbox Code Playgroud)

  • 不是线程安全的...如果在`if`和`return`之间删除了缓存条目怎么办? (3认同)
  • @JonH,极不可能的事情总是发生......如果它可能发生,它可能会迟早(这大致是墨菲定律背后的想法) (3认同)