首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理这个MVC3 / RavenDB应用程序的搜索结果缓存?

如何处理这个MVC3 / RavenDB应用程序的搜索结果缓存?
EN

Stack Overflow用户
提问于 2012-07-13 13:59:57
回答 2查看 448关注 0票数 2

在我的简单MVC3应用程序中,用户可以对我的数据执行搜索,这些数据保存在RavenHQ的RavenDB数据库中。我知道RavenDB会主动缓存,但是我想首先通过缓存搜索来避免对RavenHQ的http调用。很可能每个用户都会执行相同的搜索不止一次,也有可能不同的用户将执行相同的搜索。数据不会比每周变化得更频繁。

搜索参数是搜索对象的属性。我尝试过在操作(以下)上使用输出缓存(在搜索对象上有所不同),但没有成功。可能我需要根据搜索对象的每个属性分别进行更改,但这似乎令人不满意,因为我将来可能会添加更多属性。

你会怎么处理这个?

  1. 对search.AccName变化的动作输出缓存,等等。
  2. 没有缓存的网页应用程序,依赖于RavenDB缓存。
  3. 使用HttpRuntime.Cache (但如果是,如何使用)?
  4. 其他的策略。

借口代码格式,有一些问题。

代码语言:javascript
复制
public class AccItemSearch
{
    public string Location { get; set; }
    public string AccName { get; set; }
    public int? MinPrice { get; set; }
    public int? MaxPrice { get; set; }
} 

public class AccItemSearchResults
{
    public IEnumerable<AccItem> AccItems { get; set; }
    public AccItemSearch Search { get; set; }
}

public PartialViewResult Accommodation(AccItemSearch search)
{
    var accItems = new List<AccItem>();
    using (IDocumentSession session = MvcApplication.Store.OpenSession())
    {
        // fill accItems collection by querying the RavenDB database
    }
    return PartialView(new AccItemSearchResults 
    {
        AccItems = accItems.ToList(), Search = search
    });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-14 07:55:14

RavenDB对此有内置支持,请参阅:http://ayende.com/blog/25601/ravendb-aggressive-caching-mode

票数 0
EN

Stack Overflow用户

发布于 2012-07-13 14:21:33

由于您是异步执行此操作方法,因此我将尝试使用OutputCache属性:

代码语言:javascript
复制
[OutputCache(VaryByParam = "*", Duration = 1800)]
public PartialViewResult Accommodation(AccItemSearch search)
{
    var accItems = new List<AccItem>();
    using (IDocumentSession session = MvcApplication.Store.OpenSession())
    {
        // fill accItems collection by querying the RavenDB database
    }
    return PartialView(new AccItemSearchResults 
    { 
        AccItems = accItems.ToList(), Search = search 
    });
}

VaryByParam应该告诉它根据搜索视图模型参数中的属性单独缓存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11472003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档