JMiur [E]

Difícil tema este de los scripts. No hay respuestas que abarquen todos los casos y cualquier método será útil: si funciona, está bien.

En lo personal, he tratado de buscar alguna clase de solución atemporal, que dependa lo menos posible de servidores externos y es por eso que no me canso de recomendar que se agreguen los scripts y las hojas de estilo en la misma plantilla. Eso he hecho hace tiempo, cuando se produjeron crisis similares con Hostfile y Google Pages.

Todos los scripts que hacen al funcionamiento del blog están agregados usando el método explicado en el post anterior. Los scripts externos (muchísimos) son los que uso en las entradas individuales cuando muestro alguna cosa en particular; esos son complejos de solucionar, no tanto por no tener alternativas donde realojarlos sino por el trabajo que significa editar entrada por entrada. UFA!!!.

Pero (siempre hay un pero) había un script que en este blog era importante y que no tenía forma de resolver de manera razonable: el que hace funcionar LightWindow. Por su volumen (casi 2000 líneas) y su complejidad, resultaba impráctico agregarlo a la plantilla y si bien podia, como en otros casos, cambiarle la extensión a TXT y lograr que funcionara sin problemas, ese volumen hacía que el ancho de banda disponible en casi cualquier servicio fuera insuficiente.

Hoy se me ocurrió experimentar con una alternativa y, como veo que funciona, aquí va la explicación por si a alguien le sirve.

LightWindow no sólo es un script "largo", también es uno de esos que crean problemas a la hora de agregarlos a la plantilla aún usando CDATA. Ya sabemos que Blogger es estrambótico y cambiar los símbolos no aceptados por sus equivalentes no sólo es engorroso, casi es imposible a menos que se tenga la paciencia de un santo. Pero, esa misma deficiencia de Blogger en tratar las distintas partes de una plantilla con criterios diferenciados nos permite cambiar lo malo en bueno porque las restricciones de la plantilla en si misma no se aplican a los elementos HTML agregados, allí, el código que podemos insertar es "normal".

Lo que hice entonces es crear una sección nueva justo después de <body>. Una sección es un DIV donde podemos agregar elementos y que, en general, no tiene propiedades por si misma así que es "invisible":
<!-- CONTENEDOR SCRIPTS -->
<b:section class='contenedorScripts' id='contenedorScripts' />
Hecho eso, en la ventana Elementos de la página ya está disponible como cualquier otra así que simplemente agrego un elemento HTML/JavaScript al que le doy un título para identificarlo fácilmente y luego, copio y pego el contendio del archivo lightwindow.js entre etiquetas SCRIPT:
<script type='text/javascript'>
... aquí pego el contenido del archivo ...
</script>
No uso CDATA proque no es necesario ya que Blogger no cambiará el código y lo dejará intacto.

Para mayor comodidad, voy a Edición HTML y expandiendo los artilugios, edito el elemento y le quito el título ya que no quiero que se vea nada de nada:
<!-- CONTENEDOR SCRIPTS -->
<b:section class='contenedorScripts' id='contenedorScripts'>
<b:widget id='HTMLX' locked='false' title='LightWindow' type='HTML'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
</b:section>
Vuelvo a guardar y todo parece estar en orden debido a que este script en particular no es necesario que esté en el encabezado de nuestra página porque se ejecuta recién cuando esta se ha cargado.

El mismo criterio podría usarse con otros scripts que llaman a funciones, bastaría crear elementos HTML para cada uno de ellos y colocar el contenido en ellos de tal manera de tenerlos a buen reguardo, accesibles siempre y editables.

Son varios quienes me han preguntado por el tiempo de carga del blog y si agregar los códigos en la plantilla no aumenta ese tiempo. El hecho que la plantilla tenga veinte líneas y que todo lo demás sea cargado con archivos externos no implica que el sitio se cargará más rápido ya que el total de códigos a leer es el mismo. Estén en la plantilla o fuera de ella, el navegador debe leerlos y procesarlos.

Es cierto que, en principio, se recomienda tener los scripts y las hojas de estilo en archivos externos pero esto sólo es válido en el caso de sitios con un servidor propio. Blogger no lo tiene así que, en realidad, el beneficio de ser externos y que el navegador los guarde en la caché, se ve disminuido al estar en otros servidores a los que hay que acceder para cargarlos. Si a esto, le sumamos la imposibilidad de editarlos de manera sencilla, entonces, la respuesta a la pregunta no será muy exacta pero, diría que es mejor tenerlos incluidos y que de ese modo, la velocidad de carga, mejorará en lugar de empeorar.

Por supuesto, esto no es lo ideal pero podría ser peor.

La única solución estable y definitiva es que Blogger se ponga los pantalones largos y permita de una buena vez el alojamiento de archivos en sus servidores, tal y como hace cualquier otro servicio mediocre.



 
CERRAR