ASP.net的安全缓存刷新模式

ASP.net的安全缓存刷新模式,asp.net,caching,Asp.net,Caching,我的网站上有很多这样的代码 Item item; if(Cache["foo"] != null) { item = (Item)Cache["foo"]; } else { item = database.getItemFromDatabase(); Cache.insert(item, "foo", null, DateTime.Now.AddDays(1), ... } 其中一个实例有一个相当昂贵的getItemFromDatabase方法(这是缓存它的主要原因)。我遇到的

我的网站上有很多这样的代码

Item item;

if(Cache["foo"] != null)
{
  item = (Item)Cache["foo"];
}
else
{
  item = database.getItemFromDatabase();
  Cache.insert(item, "foo", null, DateTime.Now.AddDays(1), ...
}
其中一个实例有一个相当昂贵的
getItemFromDatabase
方法(这是缓存它的主要原因)。我遇到的问题是,每次发布或重新启动应用程序时,缓存都会被清除,然后一大群用户联机并点击上面的代码,这会杀死我们的数据库服务器。

处理这类场景的典型方法是什么?

您可以挂接global.asax文件中的Application OnStart事件,并在应用程序启动时调用一个方法,在单独的线程中加载昂贵的数据库调用


在初始值为null时,使用专门的类使用锁定模式访问这些属性,以避免多次数据库调用,这可能也是一个好主意。

谢谢,您的评论让我朝着正确的方向搜索,结果就在这里;