sintaxis mvc asp.net-mvc caching

asp.net-mvc - sintaxis - razor mvc



Almacenamiento en caché en asp.net-mvc (4)

También me gusta almacenar en caché el modelo o la capa de datos. Esto aísla todo lo relacionado con la recuperación de datos del controlador / presentación. Puede acceder al caché de ASP.NET desde System.Web.HttpContext.Current.Cache o usar el bloque de aplicación de caché de Enterprise Library. Cree su clave para los datos almacenados en caché a partir de los parámetros de la consulta. Asegúrese de invalidar la caché cuando actualice los datos.

Me gustaría almacenar en caché la mayoría de las acciones pesadas de la base de datos en mi sitio asp.net-mvc. En mi investigación he encontrado

Pero no creo que lo entiendo todavía.
Quiero poder guardar en caché mi solicitud POST dependiendo de varios pares. Estos pares están en un objeto. Entonces me gustaría guardar en caché el resultado de la siguiente solicitud:

public ActionResult AdvancedSearch(SearchBag searchBag)

Donde searchBag es un objeto que contiene (un grupo) de parámetros de búsqueda opcionales. Mis propios puntos de vista son livianos (como deberían), pero el acceso a los datos puede consumir bastante tiempo, dependiendo de qué campos se llenen en la bolsa de búsqueda.

Tengo la sensación de que debería almacenar en caché mi capa de datos, en lugar de mis acciones.
¿Cómo se supone que debo usar VaryByParam en el atributo OutputCache?


A menudo, OutputCaching puede ser el más rápido y eficiente, pero solo cuando cumple con sus requisitos. ¡No tiene sentido tener una rápida eficiencia si está mal! ;)

En este caso, parece que el almacenamiento en caché de la capa de datos es correcto porque tiene necesidades complejas de almacenamiento en caché. A veces, puede combinar los dos si el conjunto de parámetros que controla qué salida se almacena en caché es simple.


O puede ser independiente de HttpContext.Current y acceder a Cache desde HttpRuntime.Cache :)


puede usar el almacenamiento en caché de salida algo como esto

[OutputCache(Duration = 10, VaryByParam = "empID")] public ActionResult GetEmployeeDetail(int empID) { Employee e = new Employee(); return Content(e.getEmployeeDetails(empID)); }

o puede usar perfiles de caché configurarlo en la configuración web

<caching> <outputCacheSettings> <outputCacheProfiles> <add name="Admin" duration="86420" varyByParam="none"/> </outputCacheProfiles> </outputCacheSettings> </caching> and use this tag [OutputCache(CacheProfile="Admin")]