Ottenere questo tramite NuGet: http://mvcdonutcaching.codeplex.com/
aggiungere un'azione per LogOnPArtial, in modo da poter cambiare da Html.Partial al Html.Action nel _Layout.cshtml
@Html.Action("_LogOnPartial","Account",true)
Il true
è un escludi parametro che dice, escludilo dalla cache. L'azione verrà chiamata anche se la pagina in cui si trova è memorizzata nella cache. Questo è il "buco" nella ciambella che non è memorizzato nella cache.
Nella pagina, come About.cshtml che si desidera memorizzare nella cache, applicare l'attributo DonutOutputCache. Ciò consente al nuovo framework di ispezionare la pagina mentre la memorizza nella cache e aggiungere flag dove hai escluso le azioni.
La cosa bella è _LogOnPartial non viene memorizzato nella cache e verrà aggiornato per utenti diversi mentre il resto della pagina viene memorizzato nella cache e l'azione About() non verrà eseguita. È anche possibile configurare la memorizzazione nella cache sull'azione _LogOnPartial creata utilizzando l'attributo DonutOutputCache, ma un intervallo più frequente o meno frequente o variare in base ad altri parametri. Ciò consente di comporre pagine di partial e la logica di aggiornamento della cache è configurata in modo indipendente per ciascun partial.
IMO questo strumento è esattamente come immaginavo che il caching in MVC avrebbe dovuto essere implementato.
Questo a volte viene chiamato "caching della ciambella" e non è supportato in asp.net mvc 2 http://stackoverflow.com/questions/2806663/donut-caching-asp-net-mvc2 –
Perché? o_O Non ci sono altre soluzioni praticabili? –
Non ho visto un'implementazione della cache ciambella. È sempre possibile memorizzare nella cache i dati nel controller, invece di memorizzare nella cache l'output html. –