2010-07-18 9 views
13

Mi sitio web tiene un script de jQuery (de Shadow animation jQuery plugin) que cambia constantemente el color de la caja de sombra de varios <div> s en la página principal.función de desactivación de JavaScript basado en el rendimiento de la computadora del usuario

La animación no es esencial, pero requiere mucho tiempo de CPU en máquinas más lentas.

¿Es posible averiguar si el script se ejecutará "muy lentamente"? Puedo desactivarlo antes de que afecte el rendimiento.

¿Es esto una buena idea? Si no, ¿hay una manera fácil de dividir el jQuery animado?

+6

Si te sirve de consuelo, se ve bonito. – Metalshark

+2

No soy un experto en JavaScript, pero mi conjetura es "no fácil". (Empecé a pensar en una idea similar recientemente). Hasta ahora, mi mejor sugerencia podría ser agregar su propia monitorización del rendimiento a través del objeto Date. Tome una muestra de vez en cuando y si la diferencia supera algún umbral, detenga la secuencia de comandos para hacer la animación. Pero, veremos si alguien tiene una sugerencia más correcta.:) – mjschultz

+0

+1 teniendo en cuenta el rendimiento de representación del cliente es una gran idea. –

Respuesta

7

Esto puede resolver su problema indirectamente. Elija algunos algoritmos y pruebas de rendimiento de este sitio http://dromaeo.com/ que parezcan similares a su plugin jQuery. No ejecute pruebas exhaustivas como lo hacen en el sitio. En su lugar, elija algoritmos bastante pequeños y rápidos, y ejecútelos durante un período de tiempo imperceptible.

Use un lapso de tiempo predefinido para limitar el tiempo que estas pruebas pueden ejecutarse. Digamos que si ese lapso es de 200 ms, y en una máquina rápida con navegador A, puede obtener 100 iteraciones, mientras que en alguna máquina de usuario aleatorio, solo puede completar 5 iteraciones, entonces puede considerar deshabilitarla en el usuario. máquina. Ajusta y modifica hasta encontrar los números óptimos.

Como beneficio adicional, envíe todos los resultados de las pruebas a su servidor para que tenga una mejor idea de dónde se encuentran sus usuarios en el espectro de velocidad. Si la gran mayoría de los usuarios usa computadoras más lentas y navegadores más antiguos, entonces puede tener sentido eliminar la cosa por completo.

+2

¿puede explicar dónde encontrar el código fuente para las pruebas? – IgalSt

6

Probablemente podría hacerlo temporizando unas cuantas veces alrededor de un bucle que hizo un procesamiento intensivo en la carga de la página, pero eso va a ralentizar la página y aumentar aún más la carga de la CPU, por lo que no parece una gran solución.

Un compromiso que he utilizado en el pasado, fue tomar la decisión basada en la versión del navegador, por ejemplo, los usuarios de Internet Explorer 6 obtienen contenido más simple mientras que los navegadores más nuevos con mejor rendimiento de JavaScript obtienen la animación. Eso pareció funcionar bastante bien en un nivel práctico. En la práctica, la elección del navegador es un factor importante en el rendimiento de JavaScript y es posible que obtenga un ajuste del 90% con lo que desea de forma muy sencilla con solo tenerlo en cuenta.

+0

Aún así, la segunda idea no podrá verificar el rendimiento de la computadora ... De hecho, muchos propietarios de computadoras rápidas usan software lento solo porque no pueden notar que es lento. – mbq

+0

Buena idea, pero este plugin solo funciona en nuevos navegadores de todos modos. – Pointy

+0

Buena idea. No tengo ningún dato, pero estoy dispuesto a apostar que los usuarios que ejecutan IE6 son más propensos a tener computadoras menos poderosas que aquellos que ejecutan Chrome (por ejemplo) –

1

Puede hacer algo como $(window).width() para obtener el ancho del navegador. Al utilizar esto, puede suponer que cualquier cosa que tenga < 1024px de ancho puede ser una netbook, un teléfono inteligente o una computadora vieja.

Esto no sería tan preciso como cronometrar un ciclo, pero es mucho más eficiente.

Obviamente esta es una regla generalizada y habrá computadoras lentas con> 1024px. Pero, en general, una computadora de 1024px + normalmente podría manejar un poco de javascript (¡hasta que el propietario cargue un montón de software, escaneos de virus y barras de herramientas del navegador!)

¡Espero que esto sea útil!

Cuestiones relacionadas