2012-08-01 75 views
2

我使用OutputCaching其中顯示MVC3剃刀---->刷新的OutputCache記錄中刪除

[OutputCache(Duration = 120, VaryByParam = "empId;page;sort;")] 

的員工記錄列表,但是,當我從列表中刪除一條記錄我的索引頁上,因爲後緩存,被刪除的記錄也正在列出,直到Outputcache到期。有一種方法可以在發生刪除操作時刷新輸出緩存? 我在我的MVC3剃鬚刀頁面上使用這個。

我有我的網頁上列出的記錄100的每條記錄都有一個「刪除」按鈕來刪除特定record.I也是用OutputCaching的頁面上,這樣的頁面加載速度更快。現在

,如果我通過點擊刪除按鈕刪除一條記錄,由於OutputCaching,甚至被刪除的記錄也會在頁面上,直到輸出緩存過期所示。 有沒有辦法,我可以解決這個問題?

有沒有一種方法,我可以從我的輸出緩存只刪除已刪除的記錄?

或者如果我正在添加一條新記錄,我不想刪除OutputCache並重新創建該緩存,而是將我的新記錄追加到現有的outputCache中?

+0

http://stackoverflow.com/questions/1167890/how-to-program-clear-outputcache-for-controller-action-method – Shyju 2012-08-01 18:42:53

回答

0

你可以嘗試追加一個querystring參數到你的url,當你刪除一條記錄時會破壞緩存嗎?這是我用於打破ajax get請求的客戶端緩存的常用方法。

然後,只需將該querystring參數添加到您的VaryByParam列表。我只是在本地進行了測試,並且在我的param中發送了一個不同的值,這個值是deletedRecordId時,它能夠強制輸出緩存中斷。

因此,無論何時您完成刪除項目並將重定向回列表操作,只要確保在路由值中傳遞參數(如果使用的是RedirectToAction),則只需創建一個用於路由值的匿名對象以保存你的查詢字符串參數緩存清除。它看起來類似這樣:

return RedirectToAction("list", "category", new { deletedRecordId = deletedRecordId }); 
+0

有沒有辦法,我可以只從我的outputCache中刪除已刪除的記錄? – Millar 2012-08-01 20:07:12

+0

我想說,我絕不會說我是服務器級別的asp.net mvc outputcache方面的專家。既然你只是想顯示沒有記錄的更新列表,你將需要重新生成基於現在有效的html。我明白你說的只是從緩存的版本中刪除那一部分,但是我真的不知道這是否可能。我幾乎不會在動態頁面上使用OutputCache,並且當我將它用於高流量頁面時。我已經提供了一種方法讓您的操作再次被點擊,並且您的頁面可以反映刪除。 – JustinMichaels 2012-08-01 20:20:10

0

在控制器或頁面加載代碼中使用:

HttpContext.Cache.Insert("Record"+ recordid, 1); 
Response.AddCacheItemDependency("Record"+ recordid); 

在記錄的刪除方法使用

HttpContext.Cache.Remove("Record"+ recordid);