Pregunta

Digamos que tengo unas 10 '' categorías '' que necesito hacer referencia en una aplicación web. Actualmente estoy almacenando estas categorías en la base de datos y las estoy recuperando (nombre e identificación de la categoría) durante la carga de la página en mi página base, almacenándolas en una tabla hash y luego usando la tabla hash para hacer referencia a las categorías. Me di cuenta de que la llamada DB se realiza durante cada carga de página. Solo necesito extraer estas categorías una vez, ya que nunca cambian durante una sesión determinada. ¿Cuál es la mejor manera de hacer esto?

  1. ¿Hago lo que estoy haciendo, pero lo almacena como una variable de aplicación?

  2. ¿Codificar las categorías del código y eliminar la base de datos?

  3. ¿Almacenar las categorías en una variable de sesión? ¿Y llamar al DB solo si la sesión está vacía?

  4. ¿O algo más?

Tengo curiosidad por saber cuál es la mejor práctica para hacer tales cosas.

¿Fue útil?

Solución

Si las categorías dependen del usuario, las almacenaría en la variable Sesión; de lo contrario, usaría la funcionalidad de almacenamiento en caché de ASP.NET (o el almacenamiento en caché distribuido preferido). Esto le permite evitar golpear la base de datos mientras puede controlar durante cuánto tiempo se deben almacenar en caché las categorías.

Otros consejos

Llamar a la base de datos no siempre es tan costoso como parece, un sitio web típico hace docenas de llamadas al DB en cada carga de página. Pero si se vuelve problemático en términos de rendimiento, considere usar una solución ORM. Me viene a la mente el excelente código abierto NHibernate , que es el '' de facto '' estándar para mapear bases de datos a clases y objetos. Más allá de la asignación, proporciona automáticamente dos niveles de almacenamiento en caché y agrupación de conexiones. Sin demasiados problemas, su sitio web supera a cualquier otro por un deslizamiento de tierra.

¿La desventaja de usar un ORM? Para muchas personas, se considera una curva de aprendizaje bastante empinada. Si desea leer esto, asegúrese de visitar las Mejores prácticas de NHibernate . Una lectura difícil al principio, pero definitivamente vale la pena.

Si combina NHibernate con FluentNHibernate , es muy fácil de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top