Inclusión de Javascript, como mejorar la carga y otros alegres consejos

por Alex
jueves, 05 de junio del 2008 a las 09:33

En este artículo explicaré aquellas decisiones técnicas que he seguido para la inclusión de javascript en Manager Deportivo. Estos consejos hasta ahora me han dado buen resultado y espero que os sirvan de ayuda (o al menos de referencia).

Estar el último para ser el primero.

Es importante saber donde ubicar la inclusión de los ficheros ".js", he optado por añadir todo el javascript al final del documento html, justo antes del </body>. De esta manera el navegador puede cargar y renderizar imágenes y HTML mejorando de esta manera el tiempo de respuesta. Por ejemplo, Google Analytics insiste siempre en que se sitúe su script al final del documento.

Evitar conflictos con el gremio de diseñadores/maquetadores.

Es una buena costumbre el separar el código Javascript del HTML puro y duro. Todas la funciones javascript deben ir en ficheros externos. Aunque todos los diseñadores que conozco dominan javascript, igualmente es importante separar la capa de presentación y la de funcionalidad.
En este caso "Consejos vendo, pero para mi no tengo", reconozco que en mi portal aún no tengo en cuenta mis propios briconsejos.

En grupo mucho mejor.

Realizar una sola llamada que nos devuelva todo el JS, así se minimiza las peticiones HTTP y se mejora el tiempo de respuesta. Mediante el mod_rewrite redirecciono la llamada del js a un fichero PHP que montará todos los includes en uno solo.


RewriteRule ^general\.js$ /group_javascript.php

Este fichero será el que devolverá agrupados todos los includes JS.

Con el verano llega la operación bikini.

Utilizo la librería de PHP JSMin (http://crockford.com/javascript/jsmin.html), se trata de un filtro para borrar comentarios y espacios en blanco y reducir así el tamaño del fichero.

Desde group_javascript.php:


include( 'jsmin-1.1.0.php' );

// Jquery.
echo JSMin::minify( file_get_contents( JAVASCRIPT_PATH.'jquery.js' ) );

// Thickbox.
echo JSMin::minify( file_get_contents( JAVASCRIPT_PATH.'thickbox.js' ) );

Pero que pasa cuando cambio el JS??

Un simple control de versiones me permite evitar que se cachee el js. Muy útil cuando se suben cambios importantes en el JS.


RewriteRule ^([0-9]+)/general\.js$ /group_javascript.php

De esta manera las llamadas al javascript pueden ser del estilo : hhtp://www.ejemplo.com/15/general.js, yo tengo la versión guardada dentro de un fichero de configuración.

Caché, que gran invento.

Que contar que a estas alturas no sepáis sobre la grandeza del caché.

Desde group_javascript.php:

header("Content-type: text/javascript; charset: UTF-8");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: " .
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);

Realmente todo este lío sirve para algo?

Para responder a esta pregunta instalad el plugin "YSlow" para Firefox. Comprobad la carga de vuestro sitio web antes de las modificaciones y después. Sacad vuestras propias conclusiones y comentadlas en este Blog.

Resumen y conclusiones

  • Javascript al final del documento.
  • Javascript en ficheros externos.
  • Agrupar ficheros js para reducir las peticiones HTTP.
  • Optimizar y minimizar el código de tus archivos JS.
  • Realizar un control de versiones.
  • Cachear siempre que se pueda.
  • Experimentar y probar alternativas.

Como podéis ver es una manera limpia,rápida y eficaz de optimizar vuestro código JS.

Os recomiendo la lectura del siguiente artículo sobre como optimizar el tiempo de carga de javascript

Relacionados con Inclusión de Javascript, como mejorar la carga y otros alegres consejos

Comentarios sobre Inclusión de Javascript, como mejorar la carga y otros alegres consejos

Tener una sola llamada HTTP es ideal, ya que cada petición HTTP castiga mucho el tiempo de carga. Pero todavía sería mejor precalcular esa agrupación JS y servirla como un fichero estático JS directamente, porque la caché que propones es a nivel de navegador. Por lo tanto, dos peticiones desde navegadores diferentes, te harían calcular ese fichero agrupado dos veces, y eso, con un volumen de peticiones importantes penalizaría tu site.

Si haces en cambio un sencillo script que te genera el JS final, resultado de tu agrupación, mucho mejor :)

Buen artículo

Estoy completamente de acuerdo. Es una mejora que ya me había planteado. De momento, con 50 visitas al día, el rendimiento del servidor no es mi mayor preocupación, en cambio el rendimiento de cada página sí. Igualmente lo acabaré implementando en un futuro cercano.

Deja tu comentario sobre Inclusión de Javascript, como mejorar la carga y otros alegres consejos

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sobre esta anotación

Alex

Alex escribió esta anotación hace 1 año. En ella habla sobre Decisiones Técnicas, Emprendedor, Javascript, Jquery, Jsmin y Startup.

2 personas han dejado ya sus comentarios.

Tú también puedes dejar el tuyo.

Login

Comentarios

Como funciona la herramienta de audiencia en ShoTools (atontado)
Hola Begoña,Si sitúas el cursor encima de la palabra y le das al click te permite modificar las ......(28 feb)
Como funciona la herramienta de audiencia en ShoTools (Begoña)
Hola!Enhorabuena creo que es superinteresante.He metido unas palabras clave que me gustaría ......(27 feb)
Desmontando mitos : Hablando se entiende la gente. Y un pepino! (Joana)
y con la caída de  este mito se precipita la ruína de un otro : "información es poder". se valora ......(23 feb)
En el umbral de la era de la calidad (Brizia)
Sea dicho!, y creo que es también la hora de que despierten paises como el mio y con toda razon asi ......(20 feb)
Desmontando mitos : Hablando se entiende la gente. Y un pepino! (albertlg)
Nuestro Myth Buster particular... jejeje. ;)Bueno, aunque algunos mitos más que "desmontarlos" los ......(18 feb)

Más comentados

Soy más famoso que Enrique Dans (8)
Sí, tenéis razón, he redactado un título que faltando de forma escandalosa a la verdad busca llamar ...
Si la crisis aprieta, bueno es software libre. 10 programas gratis para sobrellevar la desaceleración económica. (7)
Reduciendo costes Lo reconozco, siempre he sido un ferviente defensor del software libre. Es ...
Seguir o no seguir, el eterno dilema de Twitter (7)
Una de las preguntas más habituales que surge cuando se crea un perfil en Twitter es ¿Debo seguir a ...
En el umbral de la era de la calidad (7)
¿Cuantas veces habéis entrado en un bar a tomar un café y os ha sorprendido el mal servicio y/o la ...
Modelos de negocio distribuídos, como monetizar una red social (6)
El tiempo va pasando y el proyecto que he desarrollado ( Manager Deportivo ) va creciendo. Sigo sin ...

Suscripción

Suscríbete al Feed RSS XML

También puedes suscribirte directamente con alguno de los siguientes enlaces:

  • Suscríbete en Bloglines
  • Suscríbete en Google