パーシャルビューで別のOutputCacheプロパティを設定しようとすると、PartialViewキャッシュが親出力キャッシュ期間を使用していることがわかります。次のコードで、私はれるrenderPartialが短くOutputCache期間につながることを望んでいるだろうが、私はそれが(10秒)DateTime.Now中を示すこの単純な例では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");
}
}
親ビューと同じであることを見つけますPartialViewは、親ビューがフラッシュするまで、PartialViewがキャッシュをクリアしないことが分かりました。私は、パーシャルビューのキャッシュが5秒ごとにキャッシュされることを望んでいました。 PartialViewでOutputCacheを使用している例を見ると、キャッシュはPartialViewで実装されているビューではなく実装されています。これがMVC3でのキャッシュの制限であるのか、同じページで異なるキャッシュメカニズムを扱う別の方法があるのか誰にも分かりますか?前もって感謝します!
ダーリンに感謝します。私はこれを回避する手段があることを期待していましたが、その答えはかなり意味があります。今度はドーナツが欲しい! – likestoski
出力キャッシュについてのベストプラクティスは何ですか?このシナリオでは、ページ全体をキャッシュすると、ログアウトリンクにヒットしたときに_LogOnPartialが更新されなくなります。 – likestoski