【问题标题】:Caching options in ASP.NET Web APIASP.NET Web API 中的缓存选项
【发布时间】:2014-09-11 01:43:05
【问题描述】:

为什么 Web API 没有像 MVC 动作这样的缓存功能? 是不是因为这些是基于 HTTP 的服务,所以调用之间没有状态?

我见过一些像 CacheCow 和 Strathweb 这样的开源软件,但不知道该选择谁以及为什么? 使用 ASP.NET Web API 进行缓存的最佳和标准选项是什么?

【问题讨论】:

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


【解决方案1】:

这是一篇解释主要选项的详尽文章,并包含指向更多信息的链接:

EXPLORING WEB API 2 CACHING

它包括以下信息:

穷人的实现在于:

  • 实现支持按键存储和检索值的缓存存储
  • 从请求属性(如操作参数、方法、标头等)生成密钥以生成密钥
  • 检查该键的值是否在缓存存储中可用:

    • 如果有,请退回
    • 如果没有生成,保存并返回

    var 结果 = cacheStore.GetValue(keyFromRequest); 如果(结果 == 空) { 结果 = MyClass.ExpensiveFunctionCall(params); cacheStore.Store(keyFromRequest, 结果); } 返回结果;

例如,缓存存储可以是数据库、内存缓存(如MemoryCache 类)或Redis 服务器。

这个想法的演变是使用MVC action filters 使这个缓存检查自动进行,或者使用像前面提到的CacheCow 这样的完全实现的解决方案

【讨论】:

  • 你能帮我解决这个问题吗stackoverflow.com/questions/26398129/…
  • 作为缓存存储的数据库是否不会违反缓存的定义,缓存的定义是为了防止数据库查询!
  • @user1451111 不。缓存是一种能够以更快或更“便宜”的方式返回值的东西,而不是您用来获取它的常用方法。在您的示例中,内存比 DB 快。但是想象一下,您需要向多个外部服务提供涉及复杂计算和查询的请求。在这种情况下,从数据库中获取数据比原来的获取方法要快得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 2013-01-26
  • 2019-01-29
相关资源
最近更新 更多