【问题标题】:Refresh in-mem data cache in ASP.NET WebAPI controller periodically?定期刷新 ASP.NET Web API 控制器中的内存数据缓存?
【发布时间】:2015-10-05 20:17:30
【问题描述】:

我有一个使用 ASP.NET WebAPI 构建并托管在 Azure 上的网站。它与 SQL server 对话,为了提高用户感知的页面加载性能,我在其控制器中添加了内存数据缓存,因为刷新逻辑是惰性的,所以第一个用户会遇到很长的加载时间。

现在我想主动刷新缓存,我可以在控制器中安排一个线程/任务来定期刷新缓存吗(我已将网站设置为“始终开启”,因此应用程序池不会释放它)?我可以使用任何现成的库吗?谢谢。

【问题讨论】:

    标签: asp.net caching asp.net-web-api controller


    【解决方案1】:

    不确定 Azure,但对于本地,您可以使用 Global.ascx 文件的 Application_Start 方法来初始加载缓存。

    您可以使用相同的 global.asax 文件来安排计时器定期调用方法,在此方法中您可以编写逻辑来使缓存无效并重新加载。 看看如何使用定时器here

    您可以使用 HttpRuntime.Cache 来存储缓存的数据。

    此外,为了确保您的对象应该被释放,并且在应用程序关闭时不应运行任何后台线程(无论是计划的还是意外的)

    还可以阅读 IRegisteredObject 接口,它可以帮助您在应用程序关闭之前处理对象。

    如果您需要有关如何实现它的更多信息,请告诉我,您需要为此提供更多信息。

    【讨论】:

    • 我也有类似的要求。我在我的 web api 中使用 MemoryCache 进行缓存。现在我想创建一个 API 端点,它刷新部署了我的 API 的服务器的所有缓存。我该怎么做?
    【解决方案2】:

    试试 Quartz.Net 是一个简单且非常好的工具来安排/管理任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多