當試圖在局部視圖上設置不同的OutputCache屬性時,我發現PartialView緩存正在使用父級輸出緩存持續時間。用下面的代碼我希望的RenderPartial將導致較短的OutputCache持續時間,但是我發現,這是相同的父視圖(10秒)MVC3部分視圖OutputCache被父視圖覆蓋
public class HomeController : Controller
{
[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
ViewBag.Message = "Time now: "+ DateTime.Now.ToString();
return View();
}
[ChildActionOnly]
[OutputCache(Duration=5, VaryByParam="none")]
public PartialViewResult LogonPartial()
{
return PartialView("_LogOnPartial");
}
}
與表示DateTime.Now在這個簡單的例子部分視圖我發現部分視圖不清除它的緩存,直到父視圖刷新他的位置,我希望部分視圖每5秒鐘清除一次緩存(而不是每10秒鐘就像父視圖一樣)。通過我在PartialView中看到的使用OutputCache的示例,緩存在PartialView而不是包含視圖上實現。有誰知道這是否是MVC3中的緩存限制,或者是否有另一種方法來處理同一頁上的不同緩存機制?提前致謝!
感謝達林,我曾希望有一種解決方法,但這個答案很有意義。達尼特現在我想要甜甜圈! – likestoski
關於輸出緩存,有哪些「最佳實踐」?我已經給出了這種情況,緩存整個頁面會導致_LogOnPartial在您點擊註銷鏈接時不刷新。 – likestoski