2011-12-15 91 views
0

我正在使用MCV3 OutputCache來減少包含數據表的頁面的加載時間。我使用ajax方法來更新信息並操作DOM以向用戶顯示其更改已成功。這是沒有問題的,直到他們加載頁面,並加載緩存的數據集,而不是更新的。在MVC3項目中使用OutputCache的C#

當Update方法被調用時,我想清除緩存或將其刪除,以便在重新加載頁面時使用新的更新數據重新創建緩存。

我的代碼如下:

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); 
} 

回答

0

你可以用你的行動Index結果加載屏幕的模板,並使用AJAX來獲取並加載實際數據。

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); // Really only return a model that is okay to be cached 
} 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return Json(Result); // Don't forget to allow GET here if you're using HTTPGET 
} 

// Or... 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return PartialView (Result); 
} 

這樣,Index可以緩存就好了頁面已被提供給用戶後的數據將被加載並注入到頁面中。如果您打算使用jQuery之類的東西,請確保在使用GET時不要使用緩存結果。

+0

不幸的是,我必須使用不支持TOP或LIMIT命令的MS Access DB。這意味着我有一個相當大的數據集來處理,它實際上是我希望緩存的行,而不是頁面或其他部分視圖。 – joepour 2011-12-15 04:01:51

+0

是的,但您也可以將結果緩存在LoadData方法中,並且一旦客戶端爲其準備好,頁面就會發送塊。 – 2011-12-15 06:33:58