2011-01-04 9 views
5

¿Está diseñada esta tecnología para plantillas pequeñas o podría usarse para mostrar grandes conjuntos de datos? Tales como tablas con 1000 filas y 20 columnas?Jquery Templates performance

¿Cómo funciona la escala de rendimiento para casos como estos? La forma ideal y limpia de mostrar los datos sería suministrar datos JSONified devueltos desde el servicio web a la plantilla de JQuery. Se ve elegante en teoría, pero ¿vuela en la práctica para grandes conjuntos de datos?

Respuesta

5

Depende mucho del navegador que realiza la representación. IE6 puede ser bastante lento (aunque la transferencia de 1.000 filas grandes de marcado HTML e inyectar eso en el documento tampoco va a ser rápido).

Aquí está a jsperf benchmark that generates 1,000 rows of 10 columns and renders it. Estoy promediando 200-250ms para renderizar las 1,000 filas en Chrome 9.

La pregunta más importante debería ser: ¿Por qué en el mundo muestra 1000 filas a la vez? Siempre hay mejores alternativas UX que eso.

+0

Voy a mostrar alrededor de 600 en realidad. Me pidieron que mostrara todas las filas a la vez sin paginar específicamente. Alguien en SO sugirió que haga algo así como almacenar en caché los datos recibidos del servicio web y mostrarlos en fragmentos a medida que el usuario se desplaza. Soy bastante nuevo en Jquery y no he visto muchos ejemplos que lo ilustren. – sarsnake

+0

Ni siquiera necesitaría necesariamente la complejidad de la actualización a medida que el usuario se desplaza. Simplemente represente el conjunto de datos visible primero y luego comience a renderizar y anexar el resto de sus datos en ~ 100 fragmentos de fila. Aún mejor, puede comenzar solicitando solo el primer conjunto visible de filas del servicio web, luego solicite inmediatamente el resto después de representar el primer bit. Eso debería acelerar el tiempo total hasta que algo sea visible también. El principal inconveniente de hacerlo es que afectaría continuamente el tamaño de la barra de desplazamiento a medida que se añadieran más filas. –

+0

Gracias Dave, pero no estoy seguro de cómo funcionaría eso, ¿no es Javascript single threaded? La demora para mí ocurre en el bucle a través del lado de los datos JSON (del servicio web), no del lado del servicio web ... entonces ¿por qué debería llamar al servicio web varias veces? ¿No bloquearías tu camino el navegador? – sarsnake