[英]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.