2012-06-08 7 views
5

Estoy usando varios plugins de jquery, incluyendo lazy-load, scrollTo, un efecto de imagen y varios fragmentos recogidos de la lectura de publicaciones de personas en este sitio. Ahora, todos estos efectos se disparan, desde el pie de página, y hay un rezago que está sucediendo. Los efectos son como, vacilante o nervioso o poco amable.optimización de código jquery-in-footer (teoría)

He jugado con el uso de documentos listos frente a la carga de ventanas, y tengo un fragmento en el encabezado para evitar el FOUC, pero tengo la sensación de que hay un problema de cola, sobrecarga de memoria o algo así. (Es como cuando intenta usar su computadora portátil con demasiados programas funcionando, y todo parece pesado y lento.)

Especialmente en Opera. Por alguna razón, es como si Opera no puede manejar mi sitio.

No tiene sentido para mí que algunos efectos de jquery representen un problema. La gente juega videojuegos intensos, no hay problema, y ​​sin embargo, un sitio web con efecto fadeIn de repente es demasiado para que las computadoras lo manejen. Debe haber algo que estoy haciendo mal con mi código de pie de página.

Así que mi pregunta en teoría -

¿Hay como una práctica estándar que tienen que empezar a seguir, para asegurarse de que todos estos efectos jQuery correr más suave, engullir menos memoria, no entran en conflicto entre sí, ¿o lo que sea?

+2

Definitivamente, [guarde en caché sus selectores] (http://stackoverflow.com/questions/5724400/does-using-this-instead-of-this-provide-a-performance-enhancement). –

+1

Danos la dirección de tu página web, la estudiaremos y te daremos algunos consejos. –

+0

www.ideagasms.net gracias – Stephen

Respuesta

5

Bueno, primero debe averiguar si es su código JavaScript/jQuery que está ralentizando la página web o si se trata de los complementos. En otras palabras, profile su código.

Una vez que haya hecho eso, puede comenzar a optimizar. Hay toneladas de artículos que discuten la optimización de jQuery.

Algunos consejos:

  • selectores de identidad por sí mismos son rápidos, ya que se delegan a getElementById(), que está muy optimizado por el navegador .
  • Selectores de caché jQuery. Es decir, no llame al $('.class1 #id2 > child3') 10 veces seguidas. Guárdelo en una variable como var $mytd

Si el error se encuentra en el complemento, las opciones son más limitadas. Sin embargo, hay algunas cosas que puede probar:

  • asegurarse de que son miniaturizada para que se carguen rápidamente (que no sólo toma tiempo para transferir los archivos, sino también para leer, ya que no se compilan)
  • Encuentra alternativas ligeras. p.ej. Si solo necesita un efecto de fundido, no incluya una biblioteca jQuery completa de 50 kb.

Opera debería ser muy rápido, al menos por lo que escuché. Sin embargo, si está probando con IE, espere que sea lento. Su motor de JavaScript simplemente no es muy bueno.

+2

Solo en la web hay 50kb de una biblioteca "completa" :) – n0pe

+0

Por supuesto, también existe la gran cantidad de mejores prácticas de carga web, las Mejores prácticas para acelerar su sitio web de Yahoo (http: //developer.yahoo.com/performance/rules.html). Todo el mundo lo sabe, pero vale la pena mencionarlo. –

+0

Sí, estoy obteniendo un grado Yslow de 90 y algo, así que esto tiene que ser una sobrecarga de jquery. Gracias por todas sus respuestas, parece que tengo muchas lecturas por hacer. Si alguien quiere echar un vistazo, es www.ideagasms.net. Dejé notas detalladas en el pie de página, así que es fácil dar sentido a los fragmentos que están allí. – Stephen

Cuestiones relacionadas