net mvc enable cache asp asp.net asp.net-mvc architecture caching outputcache

asp.net - mvc - Estrategia de almacenamiento en caché, Caché de salida vs Caché de datos o ambos?



outputcache mvc 5 (2)

Estamos haciendo caching de API y salida en un sitio web a gran escala (3 millones de visitas al día) (portal de noticias). El sitio es utilizado principalmente por usuarios anónimos, pero tenemos usuarios autenticados y almacenamos en caché un sitio completo solo para ellos, debido a algunas partes personalizadas del sitio, y debo admitir que no tuvimos absolutamente ningún problema con la presión de la memoria.

Por lo tanto, mi consejo sería almacenar en caché todo lo que pueda en el caché de la API para que la reconstrucción de la caché de salida sea aún más rápida.

Por supuesto, preste mucha atención a los valores de la relación de caché en los contadores de rendimiento. Debería ver números> 95% de éxitos almacenados en caché.

Otra cosa para prestar atención es la invalidación del caché, este es un gran problema si tienes un montón de contenido relacionado. Por ejemplo, puede almacenar música en la memoria caché y la información sobre un álbum o canción puede mostrarse y almacenarse en caché en cientos de páginas. Si algo cambia en esa canción, debe invalidar todas estas páginas, lo que puede ser problemático.

En pocas palabras, el almacenamiento en caché es una de las mejores características de ASP.NET, está hecho magníficamente y puede confiar en él.

Estoy trabajando en un proyecto ASP.NET MVC y he llegado al punto en el que quiero comenzar a considerar mi estrategia de almacenamiento en caché. Intenté dejar mi marco de trabajo lo más abierto posible para su uso en el almacenamiento en caché.

Por lo que escuché durante el podcast de Scott Hanselman, StackOverflow.com usa el almacenamiento en caché de salida de página y comprime ese contenido y lo coloca en la memoria RAM. Parece que esto sería genial para la caché de todo el usuario, pero para algo como páginas personalizadas, tendría que almacenar en caché una versión para cada usuario y eso podría descontrolarse rápidamente.

Entonces, para una estrategia de almacenamiento en caché. ¿Cuál debería usarse, Caché de salida, Caché de datos o combinado? Mis primeros pensamientos son ambos, pero en lo que respecta a las dependencias de caché parece que podría ser un poco complejo.


Tenga cuidado con el almacenamiento en caché demasiado agresivo. Aunque el almacenamiento en caché es una herramienta para ayudar al rendimiento, cuando se usa incorrectamente, en realidad puede empeorar el rendimiento.

No puedo responder si el almacenamiento en caché de salida o el almacenamiento en caché de datos funcionaría mejor para usted sin conocer más detalles sobre su proyecto. Puedo ayudar a proporcionar un par de ejemplos de cuándo usar uno sobre otro.

Si tiene un conjunto de datos específico que usaría a menudo en diferentes vistas, sería mejor utilizar el almacenamiento en caché de datos. Utilizaría esto si su operación de búsqueda de datos fuera muy común y costosa en relación con su procesamiento de datos. Si tenía varias vistas que usaban los mismos datos, guardaría su tiempo de obtención de datos.

Si tenía una vista que utilizaba un conjunto de datos muy específico y la representación de la vista era complicada y esta vista se solicitaba muy a menudo (por ejemplo, la página de inicio del desbordamiento de pila), entonces se beneficiaría mucho del almacenamiento en caché de salida.

Entonces, al final, realmente depende de sus necesidades y tenga cuidado al usar el almacenamiento en caché incorrectamente.