簡體   English   中英

在內存中緩存jQuery自動完成數據

[英]Caching jquery autocomplete data in memory

如果我有一個包含國家/州/省/市/緯度/經度的表,該表有數千條記錄,並且正在使用它來自動完成搜索頁面上的字段,那么將數據緩存到內存中的最佳方法是使網站更快? 我應該將所有表數據放入全局應用程序緩存中還是有更好的方法?

使用ajax請求的響應填充自動填充。 只需在控制器上調用方法並返回JsonResult。 這將允許您利用可應用於該方法的輸出緩存屬性。

    [OutputCache(Duration=1000, VaryByParam="*", Location="Any")]
    public JsonResult AutoComplete(string term)
    {
        var result = //Database query
        return Json(result, JsonRequestBehavior.AllowGet);
    }

這會將結果緩存在服務器或客戶端上,並將為傳遞給該方法的每個搜索參數創建一個新的緩存實例。

您甚至可以將緩存配置文件與輸出緩存一起使用,這將使您可以在webconfig中使用緩存選項,並在以后輕松進行更新。

希望這對您有所幫助。

有多種選擇,要說哪個(如果有)更好而不知道更多用例就太復雜了。

在服務器端,用於從數據庫檢索選項的代碼可以使用MemoryCache從高速緩存中將其提取。

var records = MemoryCache.Default.Get("LocationRecords");
if(records == null)
{
    records = GetRecords(); // <-- the method you're using now to retrieve the records

    // Change this based on how long you want to cache things for
    var expiration = DateTimeOffset.Now.AddHours(6);

    MemoryCache.Default.Add("LocationRecords", expiration);
}
return records;

您還可以設置客戶端以使用AJAX GET請求自己加載選項,並讓服務器告訴客戶端緩存其發回的信息,以便任何給定用戶的瀏覽器僅向服務器詢問數據。一旦。

在這兩種方法中,您都需要花時間考慮數據適合多長時間,並提出一個好的緩存/緩存清除/緩存清除策略。

我應該將所有表數據放入全局應用程序緩存中還是有更好的方法?

同樣,這在很大程度上取決於您的情況。 我個人更喜歡創建一個新的MemoryCache實例,並將其作為靜態變量保存在每種存儲庫類型上。 這樣,我就可以避免發生鍵沖突的可能性,並輕松地一次清除一個緩存而不會影響其他緩存。 但是,如果您的應用程序很小,則只需使用MemoryCache.Default就可以了。

暫無
暫無

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

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