2013-11-04 90 views
2

我認爲這將是一件簡單的事情,但它讓我瘋狂。動作MVC輸出緩存不在服務器緩存

public ViewResult Index(string parameter) {...}

之前,我只是添加了以下...

[OutputCache(Duration = 300)]

但它不緩存它,我把一個斷點在動作內部調試器和它擊中它的每一個我去那個頁面。如果我將Location參數設置爲Client,但它確實有效,但我希望它是基於服務器的。我必須在其他地方啓用緩存才能工作嗎?

+0

如果它的事項,在'parameter'來自路由器,如'routes.MapRoute(NULL, 「{}參數」,新{controller =「mycontroller」,action =「index」})' – Rodolfo

回答

7

發現問題。基本控制器在OnActionExecuting中設置了一個cookie,並且我發現設置cookie的頁面沒有存儲在輸出緩存中,所以基本上頁面不會被緩存,無論[OutputCache]指令如何。

+0

謝謝!動作過濾器導致的同一問題。 –

+1

你做了什麼來解決你的問題?你是否保留了動作過濾器,如果是,你還在追求緩存嗎? – cal5barton

0

我有同樣的問題,我解決了這個問題,通過修正參數VaryByParam的確切參數。

[OutputCache(Duration=120, VaryByParam ="argument1")] 

做的,而不是的VaryByParam該= 「*」