簡體   English   中英

ASP.NET MVC,自動完成文本框,緩存?

[英]ASP.NET MVC, autocomplete textbox, caching?

使用ASP.NET MVC,我實現了一個自動完成文本框,使用的方法非常類似於Ben Scheirman的實現,如下所示: http//flux88.com/blog/jquery-auto-complete-text-box-with- ASP凈MVC /

我無法弄清楚的是,為自動填充文本框緩存數據是否是一個好主意,因此每次擊鍵時都不會有數據庫往返?

如果首選緩存,您是否可以指導我如何為此目的實現緩存?

你有幾件事要問自己:

  1. 我正在撤回動態的數據嗎?
  2. 如果沒有,我多久會發生一次這樣的呼叫?

如果答案是,1-不是真的和2 - 經常發生呼叫,你應該緩存它。

我不知道您的數據訪問是如何設置的,但我只是將數據拋出到緩存對象中,如下所示:

public IQueryable<Category> FindAllCategories()
{
    if (HttpContext.Current.Cache["AllCategories"] != null)
        return (IQueryable<Category>)HttpContext.Current.Cache["AllCategories"];
    else
    {
        IQueryable<Category> allCats =  from c in db.Categories
                                          orderby c.Name
                                          select c;

        // set cache
        HttpContext.Current.Cache.Add("AllCategories", allCats, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 30, 0, 0), System.Web.Caching.CacheItemPriority.Default, null);
        return allCats;
    }
}

這是我的一個存儲庫查詢的示例,基於LINQ to SQL。 它首先檢查緩存,如果該條目存在於緩存中,則返回它。 如果沒有,它將進入數據庫,然后以滑動過期緩存它。

您確定可以使用以下屬性緩存結果:

[OutputCache(Duration=60, VaryByParam="searchTerm")]

ASP.net將處理其余的事情。

我認為在這種情況下緩存比簡單地存儲每個請求需要更多的工作。 您希望更多地關注搜索的術語而不是單個鍵。 您必須跟蹤哪些術語更受歡迎,並緩存組成這些術語的字符組合。 我不認為簡單地緩存每一個請求都會讓你獲得任何性能提升。 您只需要在緩存中包含陳舊數據。

那么,asp.net中的緩存將如何防止服務器往返? 您仍然可以進行服務器往返,最好不要在緩存時查找數據庫。 如果要阻止服務器往返,則需要在客戶端緩存。

雖然使用Javascript很容易實現(您需要將數據存儲在變量中並在再次查找服務器之前檢查該變量以獲取相關數據)但我不知道為您執行此操作的現成工具。

我建議你考慮緩存以防止往返。 事實上,我有一半想在我自己的網站上閱讀本文實現javascript緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM