部分ビューで別の OutputCache プロパティを設定しようとすると、PartialView キャッシュが親の出力キャッシュ期間を使用していることがわかります。次のコードでは、RenderPartial の OutputCache の期間が短くなることを願っていますが、親ビューと同じ (10 秒) であることがわかりました。
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 を示すこの簡単な例では、親ビューが彼をフラッシュするまで、PartialView がキャッシュをクリアしないことがわかります。部分ビューが 5 秒ごとにキャッシュをクリアすることを望みます (親ビューとして 10 ごとではありません)します)。PartialView で OutputCache を使用して見た例では、キャッシュは含まれているビューではなく PartialView に実装されています。これが MVC3 のキャッシングの制限なのか、それとも同じページで異なるキャッシング メカニズムを処理する別の方法があるのか、誰にもわかりませんか? 前もって感謝します!