Tengo una consulta sql (proc almacenado) que tarda aproximadamente 8-10 segundos para volver antes de que los resultados se muestren en una red web. ¿Cuál es la mejor práctica para el rendimiento con respecto al almacenamiento en caché en asp.net-mvc3, por lo que el usuario no tiene que tomar esos 8-10 segundos cada vez para cargar esos datos (menos optimización de la consulta)?MVC3 técnicas de caché de datos
Respuesta
Puede usar la clase MemoryCache para almacenar el resultado de esta consulta bajo alguna tecla. La clave podría ser el hash de los criterios de consulta (si los tiene). Y aquí están some guides en MSDN sobre cómo usarlo.
Al implementar el almacenamiento en caché, tenga en cuenta que este caché se almacena en la memoria de forma predeterminada. Esto significa que si está ejecutando esta aplicación en una granja de servidores web, podría ser más interesante usar una memoria caché distribuida para que todos los nodos de la comunidad compartan los mismos datos en la memoria caché. Esto podría hacerse ampliando la clase ObjectCache con alguna solución de almacenamiento en caché distribuida. Por ejemplo, memcached es popular y tiene .NET provider. Otra solución de almacenamiento en caché distribuida es AppFabric.
Está almacenando en caché esta acción.
[OutputCache(Duration = 300)]
public ActionResult Action(){
//some operation
return View()
}
Eso almacenará en caché toda la acción (por ejemplo, la acción ni siquiera se ejecutará), por lo que incluso si los datos cambian no se ejecutará durante los próximos 5 minutos. A veces puede ayudar, pero Al acceder a los datos, prefiero no utilizarlo. – BigMike
¿Con qué frecuencia cambian los datos subyacentes de este procedimiento almacenado? Si relativa poca frecuencia, puede utilizar característica muy buena - SqlCacheDependency
http://msdn.microsoft.com/en-us/library/ms178604.aspx
De esta manera su SP pesada se llamará sólo cuando es necesario, y el resultado se almacenará en caché el mayor tiempo posible.
Thx para la respuesta. Probablemente necesite actualizarse cada 3-4 horas. Sin embargo, obtuve SqlCachDep Suerte trabajar así que gracias, pero probablemente necesite actualizarlo con más frecuencia. – JaJ
- 1. Caché de salida personalizada MVC3
- 2. técnicas de detección de memoria caché node.js
- 3. Técnicas para mantener los datos en el caché, localidad?
- 4. Técnicas para eliminar datos antiguos en bases de datos Oracle
- 5. Técnicas para visualizar datos
- 6. Aplicación web Java: ¿cómo implementar técnicas de almacenamiento en caché?
- 7. Técnicas para el envejecimiento de datos
- 8. Caché MVC3 RenderPartial en varias páginas
- 9. CacheDependency de 2 o más elementos de caché. (ASP.NET MVC3)
- 10. estrategia de caché de datos consultados
- 11. Técnicas de optimización en C#
- 12. Recomendaciones y técnicas de replicación de Muzak
- 13. Técnicas de optimización de bases de datos para amateurs
- 14. Técnicas para la herencia de la base de datos?
- 15. Caché de datos en ASP.Net
- 16. Estrategia de almacenamiento en caché, Caché de resultados frente a caché de datos o ambos?
- 17. Técnicas de navegador cruzado para deshabilitar el almacenamiento en caché de contraseñas
- 18. AJAX ¿Técnicas de racionalización?
- 19. Técnicas comunes de SIMD
- 20. de diseño (o técnicas) para la escalabilidad
- 21. Técnicas para mejorar la tasa de transacción
- 22. Prevenir datos de caché de Android WebView
- 23. Técnicas de optimización en Python
- 24. Técnicas de depuración de multiprocesamiento
- 25. Técnicas de detección de bordes
- 26. Técnicas de depuración de subprocesos
- 27. Técnicas de depuración de Oracle
- 28. Caché de datos para principiantes en PHP
- 29. Mejor manera de almacenar datos en caché
- 30. Caché de datos en Preferencia compartida
MemoryCache es probablemente la solución correcta, pero tengo algunos escenarios en los que los objetos se expulsan automáticamente de la memoria caché (con un MVC 3). ¿Cuál es tu consejo con respecto a eso? ¿Hay alguna configuración particular necesaria para que funcione con MVC? Oh, bueno, si quieres darle una oportunidad, ¿puedes leer http://stackoverflow.com/questions/7849000/memorycache-empty-just-after-adding-an-object? Todavía estoy luchando con ese problema y no puedo entender dónde estoy fallando. :(Gracias. – BigMike
@BigMike, puede especificar una política de caducidad al almacenar objetos en la memoria caché. Podría definir expiración absoluta, caducidad, cambiar monitores, ... Es muy flexible. –
sí, puedo, lo he intentado con caducidad de deslizamiento y expiración de tiempo absoluto. En algunos casos he desalojado todo aparentemente sin motivo. Lo curioso es que en mi devolución de llamada eliminada tengo una Razón de cachéespecífica de desalojo pero no puedo encontrar quién está desahuciando. – BigMike