【问题标题】:The best way to use controllers with cached data in .Net Core 2.0在 .Net Core 2.0 中使用具有缓存数据的控制器的最佳方式
【发布时间】:2019-03-05 21:26:22
【问题描述】:

我创建了由 8 个控制器和 12 个存储库组成的 .Net Core 应用程序。应用程序缺乏速度,需要减少发送到 SQL 数据库的请求数。

当接收到用户的请求时,所有控制器都会创建一个新连接以通过存储库加载数据。我认为改进核心的最好方法是缓存所有数据并将其存储在存储库的内存中

目前,所有存储库都有一个缓存结果列表,在初始化期间填充(我只是调用 SELECT * FROM table 并将数据放入列表中)

问题在于控制器存储相同存储库的不同实例,其中每个存储库都有自己的缓存列表。它可以工作但并不理想,因为需要更新缓存并且需要在所有控制器中存储缓存列表

您对如何在 .Net Core 中的控制器之间共享缓存数据有任何想法吗?

【问题讨论】:

  • 对缓存使用staticLazy<T> 类可能是最好的解决方案。

标签: c# caching asp.net-core-2.0


【解决方案1】:

我会为存储库保留基于实例的依赖注入,但我会确保为存储库注入一个用于检索数据的单例缓存。这样可以确保每个存储库实例访问相同的缓存。不确定您是否使用 IMemoryCache IMemoryCache,但这是一个很好的例子。

【讨论】:

  • 嘿,denat,感谢您的链接和想法 - 我会尝试实施您的方法
  • 您应该使用IDistributedCache 而不是IMemoryCache。默认情况下,MemoryDistributedCache 提供程序会为 IDistributedCache 注入,因此最终结果是相同的:缓存在内存中,但使用 IDistributedCache 可以让您稍后使用备用缓存方法,例如 Redis。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多