Entiendo que cada actualización de página, especialmente en 'AjaxLand', hace que mi clase back-end/code-back sea llamada desde cero ... Esto es un problema porque mi class (que es un objeto miembro en System.Web.UI.Page) contiene MUCHOS datos que obtiene de una base de datos. Entonces, cada actualización de página en AjaxLand me está causando hacer grandes llamadas a bases de datos en el back-end, en lugar de solo reutilizar un objeto de clase desde la memoria. ¿Alguna solución para esto? ¿Es aquí donde las variables de sesión entran en juego? ¿Son las variables de sesión la única opción que tengo para retener un objeto en la memoria que está vinculado a una instancia de usuario único y sesión única?'Caché' de una tabla grande en ASP.NET
Respuesta
Eche un vistazo a esta MS article en varios mecanismos de almacenamiento en caché para ASP.NET. Hay una sección llamada "Caché de objetos arbitrarios en la memoria del servidor" que puede interesarle.
Necesita ASP.Net Caching.
Específicamente Data Caching.
Ya que mencionas Ajax, creo que es posible que desee considerar los siguientes puntos:
asumir esta gran conjunto de datos es estático y no transitoria, en la primera llamada a Ajax, su aplicación consulta la base de datos, recupera un montón de datos y devuelve al cliente (es decir, el navegador/JavaScript que se ejecuta en el navegador, etc.), el cliente ya tiene todo eso en la memoria. Posteriormente, no es necesario volver al servidor para obtener los mismos datos que su cliente ya tiene en la memoria. Lo que necesita hacer es usar JavaScript para reconstruir el DOM o lo que sea. Todo se puede hacer en el cliente a partir de ahora.
Supongamos ahora que los datos no son estáticos sino transitorios, el almacenamiento en caché en el servidor al colocarlos es que la sesión no será la solución que desea de todos modos. Cada vez que su cliente envía una solicitud al servidor y el servidor simplemente devuelve lo que está en la memoria caché (sesión), los datos ya están obsoletos y no hay diferencia con los datos que el cliente ya tiene en la memoria.
El punto es si los datos son estáticos, guarde viajes redondos al servidor una vez que ya tenga datos en la memoria. Si los datos son transitorios, me temo que no hay una solución económica, excepto volver a consultar o volver a recuperar los datos de alguna manera, y enviar todo de vuelta al cliente.
Si sus datos son específicos del usuario, entonces Session sería el camino a seguir. Tenga cuidado si tiene una granja web o un jardín web. En ese caso, necesitará un servidor de sesión o una base de datos para su sesión.
Si sus datos son de nivel de aplicación, entonces Application Data Cache podría ser el camino a seguir. Tenga cuidado si tiene RAM limitada y sus datos son enormes. El caché puede vaciarse en un momento inoportuno.
De cualquier forma, tendrá que probar el rendimiento de su aplicación con los cambios. Incluso puede encontrar que volver a la base de datos es la opción menos mala.
Además, podría echarle un vistazo a Lazy Loading algunos de los datos, para hacerlo menos pesado.
- 1. ¿Cómo manejar una tabla grande en MySQL?
- 2. Eliminar duplicados de una tabla grande
- 3. ¿Qué tan grande es demasiado grande para una tabla MySQL?
- 4. Cómo estructurar una tabla extremadamente grande
- 5. valor ViewState grande en ASP.NET
- 6. Caché de datos en ASP.Net
- 7. Mantener una tabla grande de valores únicos en MySQL
- 8. Rellenar una tabla en una página ASP.NET
- 9. Acelere una consulta, unión interna simple con una tabla grande y una tabla pequeña
- 10. Deshabilitar Caché de ASP.net
- 11. Carga de archivo grande en asp.net MVC
- 12. Mathematica tabla grande interpolación periódica
- 13. ASP.Net Almacenamiento en memoria caché
- 14. asp.net mvc - almacenamiento en caché
- 15. Agregar índice en una tabla grande toma para siempre
- 16. Usando una tabla de caché en SQLServer, ¿estoy loco?
- 17. Patrones de almacenamiento en caché en ASP.NET
- 18. caché asp.net dentro de httpcontext
- 19. Encabezados de control de caché en ASP.NET
- 20. Caché ASP.NET tamaño máximo
- 21. Deshabilitar caché asp.net
- 22. Caché de buñuelos ASP.NET MVC2
- 23. Escenario de almacenamiento en caché ASP.NET MVC
- 24. Seleccione el segundo más grande de una tabla sin límite
- 25. Compensación caché de página en ASP.NET
- 26. ASP.NET ¿Razor páginas web en proyecto grande?
- 27. Cómo obtener la segunda entrada más grande o la tercera más grande de una tabla
- 28. Almacenamiento en caché en asp.net-mvc
- 29. Implementar el caché correctamente en una biblioteca de clases para su uso en una aplicación asp.net
- 30. ASP.NET MVC - compresión + almacenamiento en caché
Cada actualización de página causará que la página sea (re) evaluada, independientemente de si se está utilizando AJAX. Su código AJAX NO debería estar refrescando toda la página, debería volver a utilizar los datos relevantes * en el lado del cliente * (es decir, NO como un objeto .NET en la memoria [servidor]). –