3

部分ビューで別の 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 のキャッシングの制限なのか、それとも同じページで異なるキャッシング メカニズムを処理する別の方法があるのか​​、誰にもわかりませんか? 前もって感謝します!

4

1 に答える 1

3

親ビュー全体を 10 秒間キャッシュしました。これは、その 10 秒間、子アクションがヒットすることはなく、ビュー全体がキャッシュから提供されることを意味します。子アクションのキャッシュが 5 秒後に期限切れになっても、ヒットしません。

ASP.NET MVC 3 では、ドーナツ ホール キャッシュのみがサポートされています (子アクションの OutputCache 属性を使用してページの一部をキャッシュします)。ドーナツ キャッシングはサポートされていません (キャッシュされたページの一部をこのキャッシュから除外します)。

于 2011-11-07T15:23:07.433 に答える