2012-04-19 61 views
1

我的子操作未被緩存。我不知道爲什麼。未使用OutputCache屬性緩存的MVC 3子操作

我的母版頁調用子操作:執行

@Html.Action("Header", "Layout", new { selectedMarket = Model.SelectedMarket }) 

    [ChildActionOnly] 
    [OutputCache(Duration=60)] 
    public PartialViewResult Header(Guid selectedMarket) 
    { 
     var model = _marketService.GetHeaderViewModel(selectedMarket); 
     return PartialView(model); 
    } 

這孩子動作和每一個請求的部分進行重新渲染。

注意:我可以使用OutputCache成功緩存整個頁面。這只是甜甜圈孔緩存,不適合我。

+0

你是如何渲染孩子的行爲? – 2012-04-19 14:57:52

回答

1

嘗試以下方式設置OutputCacheAttribute:

[OutputCache(Duration=3660, VaryByParam="selectedMarket")] 

這將爲每個selectedMarket單獨的緩存(我想是你所需要的)。讓我知道這是否有幫助。

+0

最後,是的。我試圖首先讓這個簡單的案例工作,然後增加這個複雜性。按照您的建議添加了VaryByParam,但我的子操作和視圖仍然針對每個請求執行。 – 2012-04-19 15:35:07

+0

顯然,它會根據路線值自動變化。在我的測試中,爲每個請求隨機選擇selectedMarket guid。當我開始使用一致的現實世界市場指導時,它按預期工作。 – 2012-04-19 15:39:26

相關問題