在asp.net-mvccaching

我想caching我的最重要的数据库在我的asp.net-mvc网站。 在我的研究中,我发现了

  • 甜甜圈在Phil的博客上caching
  • 在Kazi的博客上caching/压缩filter
  • 斯科特·汉斯曼(Scott Hansleman)关于他们如何在SO中caching事情的播客。

但我觉得我还没有得到它。
我希望能够caching我的POST请求取决于几个部分。 这些语法在一个对象中。 所以我想caching下面的请求的结果:

public ActionResult AdvancedSearch(SearchBag searchBag) 

searchBag是一个包含(一堆)可选search参数的对象。 我的看法本身很轻(应该是这样),但数据访问可能相当耗时,取决于search包中填充的字段。

我有感觉我应该caching在我的数据层,而不是我的行动。
我该如何在OutputCache属性中使用VaryByParam?

我也喜欢caching模型或数据层。 这隔离了从控制器/演示文稿中检索数据所做的一切。 您可以从System.Web.HttpContext.Current.Cache访问ASP.NETcaching或使用企业库中的caching应用程序块。 为查询的参数创buildcaching数据的密钥。 更新数据时一定要使caching无效。

或者你可以独立于HttpContext.Current并从HttpRuntime.Cache访问caching:)

通常,OutputCaching可以是最快和最有效的,但只有当它满足您的要求。 没有意义,如果它错了,快速高效! ;)

在这种情况下,听起来像在数据层caching是正确的,因为你有复杂的caching需求。 有时,如果控制caching输出的参数集简单,则可以将两者结合起来。