Obtener esta vía Nuget: http://mvcdonutcaching.codeplex.com/
añadir una acción de LogOnPArtial, para que pueda cambiarlo de Html.Partial a Html.Action en el _Layout.cshtml
@Html.Action("_LogOnPartial","Account",true)
El true
es una excluye el parámetro que dice, excluye esto del almacenamiento en caché. Se llamará a la acción incluso si la página en la que se encuentra está en caché. Este es el "agujero" en la rosquilla que no está en la caché.
En su página, como About.cshtml que desea almacenar en caché, aplique el atributo DonutOutputCache. Esto permite que el nuevo marco inspeccione la página mientras la almacena en la memoria caché y agrega indicadores donde ha excluido las acciones.
Lo bueno es que _LogOnPartial no se almacena en la memoria caché y se actualizará para diferentes usuarios mientras que el resto de la página se almacenará en caché y no se ejecutará la acción Acerca de(). Incluso podría configurar el almacenamiento en caché en la acción _LogOnPartial que creó utilizando el atributo DonutOutputCache, pero un intervalo más frecuente o menos frecuente, o variar según algún otro parámetro. Esto le permite componer páginas de parciales, y la lógica de actualización de caché se configura independientemente para cada parcial.
IMO esta herramienta es exactamente como imaginé que el almacenamiento en caché en MVC debería haberse implementado.
Esto a veces se llama "caché de donuts" y no es compatible con asp.net mvc 2 http://stackoverflow.com/questions/2806663/donut-caching-asp-net-mvc2 –
¿Por qué? o_O ¿No hay otras soluciones factibles? –
No he visto una implementación de caché de donuts. Siempre puede almacenar en caché los datos en el controlador, en lugar de almacenar en caché la salida html. –