2010-04-09 18 views
5

Tengo una tabla de información que se actualiza con frecuencia. Esto se presenta usando un contenedor div con un div para cada fila, cada fila contiene 10 divs.Cuál es el enfoque más seguro de pérdida de memoria

Estoy usando setInterval para llamar a un servicio web de asmx que devuelve información json formateada.

En la devolución de llamada exitosa llamo a $("#myContainer").empty(); en el contenedor div y vuelvo a crear las filas y 10 divs anidados para las columnas de cada fila.

Esta página se puede ejecutar durante un día entero, por lo que desconfío de actualizar el DOM de esta manera ya que he notado que la memoria aumenta para el navegador a lo largo del tiempo (IE8).

El otro enfoque que estoy considerando es agregar una identificación a la fila div. Cuando los nuevos resultados procesan cada elemento de datos, busque la fila correspondiente, si existe, sobrescriba los datos en cada div. Si no existe (datos nuevos, por ejemplo), agregue la fila.

Qué enfoques han usado otros para este tipo de visualización de información pseudo en tiempo real de larga duración.

TIA

Respuesta

5

En general, una forma muy segura para evitar pérdidas de memoria es que se abstengan de destruir y volver a crear los elementos DOM. En situaciones como la suya, siempre trato de mantener la estructura DOM inicial, y simplemente actualizo el texto interno de los elementos cuando los datos nuevos de las solicitudes AJAX están disponibles.

+0

¿Es eso un hecho comprobado? ¿Tiene una referencia, no es que dude, sería muy agradable leer más sobre esto. – raveren

+2

@Raveren: No, no es un hecho comprobado. En realidad, es un enfoque bastante pesimista, ya que estoy seguro de que los navegadores modernos son más que capaces de administrar la memoria al crear/eliminar elementos DOM. Sin embargo, encontrar fugas de memoria en aplicaciones web de larga duración (las que se dejan abiertas durante varios días) es un dolor de cabeza tan grande, que siempre trato de mantener este enfoque pesimista. Obviamente, esto no sería posible para aplicaciones complejas de estilo GMail. Pero parece que el OP simplemente mantiene una tabla de datos actualizada en tiempo real, en cuyo caso, probaría el enfoque que sugerí primero. –

1

Actualice la página de vez en cuando.

Cuestiones relacionadas