C# 缓存数据访问层结果

C# 缓存数据访问层结果,c#,.net,asp.net,caching,data-access-layer,C#,.net,Asp.net,Caching,Data Access Layer,我想在数据访问层进行一些缓存,以帮助提高性能。我已经决定使用HTTPContext缓存,上面有一个抽象层,这样我可以在需要时切换其他缓存策略 基本上,缓存应该是可变的,这意味着对于每个单独的方法,它将根据传入的值缓存不同的结果 我的问题是,如果我想拥有一个“每个函数的缓存”,并且让系统根据传递到方法中的值来确定是命中数据库还是命中缓存,我将如何进行这项工作(即,对项值或其他内容进行哈希处理,但必须有更好的方法) 我知道我可以用横切关注点和EL以及缓存应用程序块做一些事情,但这方面的开销比我期望的

我想在数据访问层进行一些缓存,以帮助提高性能。我已经决定使用HTTPContext缓存,上面有一个抽象层,这样我可以在需要时切换其他缓存策略

基本上,缓存应该是可变的,这意味着对于每个单独的方法,它将根据传入的值缓存不同的结果

我的问题是,如果我想拥有一个“每个函数的缓存”,并且让系统根据传递到方法中的值来确定是命中数据库还是命中缓存,我将如何进行这项工作(即,对项值或其他内容进行哈希处理,但必须有更好的方法)

我知道我可以用横切关注点和EL以及缓存应用程序块做一些事情,但这方面的开销比我期望的要多一些。我想做一些重量相当轻并且可以控制的事情(例如,我可以传入一个可以检查的参数,该参数将绕过缓存-例如)


干杯安东尼

我们为此使用企业库缓存应用程序块。Entlib缓存的工作原理类似于一个带有键和值的字典

Entlib缓存允许您创建多个命名缓存,在您的情况下,每个函数一个

在每个缓存中,可以使用参数作为键。然后,您可以按如下方式执行此操作:

  • 尝试根据密钥从缓存中获取值
  • 如果值为null,则缓存中缺少该值
  • 因此,从数据库中获取值并将结果放在缓存中,以便下次可用