在asp.net web应用程序中每隔几分钟刷新一次缓存

在asp.net web应用程序中每隔几分钟刷新一次缓存,asp.net,caching,Asp.net,Caching,我有一个asp.net web应用程序。我向HttpContext.Cache添加了一些从数据库读取的数据,但我希望每隔15分钟从数据库中重新读取数据,并将其设置在缓存中。我该怎么做?我正在缓存中添加15分钟后过期的条目。在向缓存对象添加数据时,我查看了“CacheItemRemovedCallback”,但在此回调中,HttpContext未初始化,它返回null,因此,我无法将数据添加回缓存。是否有一种机制可以实现这一点?为什么不设置一个时间事件,以按照所需的时间间隔重新填充缓存,例如从gl

我有一个asp.net web应用程序。我向HttpContext.Cache添加了一些从数据库读取的数据,但我希望每隔15分钟从数据库中重新读取数据,并将其设置在缓存中。我该怎么做?我正在缓存中添加15分钟后过期的条目。在向缓存对象添加数据时,我查看了“CacheItemRemovedCallback”,但在此回调中,HttpContext未初始化,它返回null,因此,我无法将数据添加回缓存。是否有一种机制可以实现这一点?

为什么不设置一个时间事件,以按照所需的时间间隔重新填充缓存,例如从global.asax中的应用程序启动事件开始。这不会延迟任何用户的UI

protected void Application_Start()
{
    Timer customTimer = new Timer();
    customTimer.Elapsed += new ElapsedEventHandler(YourHandler.YourRepopulationEvent);
    customTimer.Interval = YourInterval;
    customTimer.Start();
}

可能您可以将回调与缓存一起使用。请参考下面的链接

加载页面时,是否可以检查缓存键是否为null或空。然后,如果是空的,重新填充?这也可以防止应用程序池重新启动时出现问题。我已经在这样做了,但是需要设置的数据在较大的一侧有一点点,需要几秒钟,我正在尝试避免用户页面加载延迟。您只需要
System.Web.Caching.Cache
在调用了CacheItemRemovedCallback。在创建缓存之前,是否需要从
HttpContext
中检索某些内容?我对缓存了解不多,但我正在使用HttpContext中的缓存来存储数据。若我直接使用Cache类而不是从HttpContext使用Cache,它会创建单独的Cache实例吗?我还缓存了其他数据,我只想使用一个缓存实例。另外,HttpConext.Cache和普通缓存之间有什么区别?好的,我读了一些关于缓存的内容,并且我使用HttpContext.Current来获取CacheItemRemovedCallback上为null的缓存。相反,我使用了HttpRuntime.Cache,因为HttpContext.Current.Cache也会返回相同的结果,并且工作正常。谢谢你帮我弄明白。谢谢你的回复。我从来没有用过应用程序启动事件,因为你的帖子,我查了一下,学到了一些新东西。对于我上面的场景,我将使用带有HttpRuntime.Cache的回调,而不是HttpContext.Current.Cache。我知道缓存在第一次请求页面之前不会准备好。我想我会接受的。