2010-05-27 8 views
11

Estoy desarrollando una aplicación jQtouch y cada solicitud hecha a través de ajax crea un nuevo div en el documento para el contenido cargado. Solo se muestra un solo div en cualquier momento.¿Cuántas div's puedes tener antes de que el dom se desacelere y se vuelva inestable?

¿Cuántas div puedo tener antes de que la aplicación comience a dejar de responder y sea lenta?

¿Alguien tiene alguna idea sobre esto?

EDIT: Su una aplicación para iPad funciona en Safari, y sería menos de 1000 div de contenido básico con muy

+6

Prueba. Entonces sabrás. –

Respuesta

7

Para ser sincero, si realmente necesita una respuesta absoluta a esta pregunta, entonces es posible que desee reconsiderar su diseño.

Ninguna respuesta dada aquí será correcta, ya que depende de muchos factores que son específicos de su aplicación. P.ej. Uso de CSS pequeño y grueso, tamaño de los divs, cantidad de gráficos reales requeridos por div, navegador/plataforma de destino, número de detectores de eventos DOM, etc.

El hecho de que pueda no significa que deba ! :-)

1

Sin definir un entorno particular, no es posible responder a su pregunta.

Y aun así, todo lo que alguien dice es solo una suposición. Debe realizar sus propias pruebas en configuraciones del mundo real con diferentes navegadores y hardware. También necesitará establecer algunos puntos de referencia de rendimiento para decidir qué significa "demasiado lento".

15

He tenido decenas de miles, tal vez incluso cien mil divs, en la pantalla a la vez. El rendimiento es bueno o malo, según:

Analizado desde HTML o generado de forma dinámica en JavaScript?

Analizado desde HTML significa que tiene una fuente html GRANDE, y esto puede hacer que los navegadores se cuelguen. Generado en JS es sorprendentemente rápido, incluso en Internet Explorer, que es el más lento de todos los navegadores para JS.

+0

Interesante ... eso tiene sentido, pero en mi experiencia, nada congela el navegador como un montón de javascript. Entonces, el desafío es dividir el scrip de generación y asegurarse de que ceda a la UI en el medio. – harpo

+0

¡De hecho, el JS analizado es sorprendentemente rápido! –

6

Como han dicho otros, realmente no hay respuesta.

Sin embargo, en esta charla acerca de la API de Google Maps versión 3, el hablante hace aparecer el número ten thousand varias veces, como un umbral básico para la infelicidad navegador.

http://code.google.com/apis/maps/documentation/javascript/

+4

Es del Dao sin nombre // Que el Cielo y la Tierra surgieron // El nombre es // // La Madre de las diez mil criaturas. –

0

he sido capaz de añadir varios miles de divs sin ningún problema. Depende de lo que harás después, por supuesto, y de la memoria en la máquina del cliente. Todos los demás tienen razón sobre eso.

Como dijo Harpo, 10K es probablemente un buen techo. En un momento, noté problemas de velocidad comenzando en 4K divs, pero el hardware ha mejorado desde entonces.

Y, como dijo Neil N, agregar los divs a través de secuencias de comandos es mejor que tener una gran fuente de HTML.

Y, para responder el comentario de Harpo, una forma de "romperlo" para que JS no bloquee la página y produzca un error "la página se ejecuta lentamente" es llamar a un temporizador al final de cada "agregar una rutina div, y el temporizador vuelve a llamar a su función "agregar un div".

Ahora, mi pregunta es: ¿es posible "pintar" para que no tenga que agregar miles de divs? Esto se puede hacer con la etiqueta canvas con algunos navegadores, pero no creo que sea posible con VML (el proyecto excanvas) en IE. ¿O es eso? Creo que VML "pinta" añadiendo nuevos elementos al DOM, en cuyo punto también puede usar DIV, a menos que sea una forma simple.

¿Es posible modificar la fuente de una imagen mediante scripts? (la imagen en el DOM, por supuesto, no la imagen original en el servidor.)

Cuestiones relacionadas