Cómo precargar elementos CSS, JS y similares

Seguro que alguna vez habéis pensado cómo hacer que vuestro sitio vaya todavía más rápido. Pues hay forma de hacerlo, sobretodo si la gente suele visitar vuestra página principal y luego sigue navegando.

La cuestión es que en muchas ocasiones los CSS y JavaScript de las páginas principales de los sitios difieren mucho del resto de la web… ¿qué hacer para mejorar esto? Pues tener un CSS y JS específico sólo para la página principal y pre-cargar los CSS y JS del resto de la página en la caché del navegador.

Para esto, que puede ser un poco complejo, podemos usar un código que he encontrado y que parece funcionar correctamente en todos los navegadores.


window.onload = function () {
  var i = 0, max = 0, o = null,
    preload = [
      'http://example.com/imagen.png',
      'http://example.com/javascript.js',
      'http://example.com/estilos.css'
    ],
    isIE = navigator.appName.indexOf('Microsoft') === 0;
  for (i = 0, max = preload.length; i < max; i += 1) {
    if (isIE) {
      new Image().src = preload[i];
      continue;
    }
    o = document.createElement('object');
    o.data = preload[i];
    //o.width = 1;
    //o.height = 1;
    //o.style.visibility = "hidden";
    //o.type = "text/plain"; // IE
    o.width  = 0;
    o.height = 0;
    document.body.appendChild(o);
  }
};

Con esto en la página principal conseguiríamos que se pre-cargasen en caché (en background) esas 3 direcciones que podrían corresponder a la imagen del CSS Sprite, la hoja de estilo y las funciones JavaScript.

Aunque esto a priori podría hacer que la página principal vaya algo más lenta, la carga de las páginas sucesivas puede aumentar en un 30% la velocidad.

HTML5 en Internet Explorer 8

Hace cosa de 2 años comencé a publicar alguna cosilla sobre HTML5. La verdad es que no era gran cosa, pero lo suficiente para hacernos una idea de que en SEO la cosa no iría nada mal. Y como hace ya 3 meses que puse este sitio web en HTML5 me he decidido ha hacer algún repaso poco a poco sobre los cambios.

Antes de nada comentar que “los buscadores” parece que ya leen el HTML5 y le están dando ya peso a las cosas como se las tiene que dar. Al cabo de las 4 semanas, sin cambios aparentes (ya que fui publicando lo mismo sin tener ningún enlace fuerte ni nada parecido) el tráfico del blog aumentó un 30%.

Eso sí, uno de los problemas más grandes que me he encontrado es que el CSS no se veía bien en Internet Explorer 8. Pero he encontrado una forma “un poco chapucera” pero efectiva de que funcione. Digo chapucera porque, como siempre, hay que meterle “algunas cosillas” al Explorer para que las trate antes de pintar por pantalla. Aún así, que conste, que no me quejo del navegador ya que HTML5 no es un estándar todavía y no tiene ninguna obligación de darle soporte, aunque he de reconocer que “lo poco que he usadO” en Opera, Chrome y Firefox se ve.

El problema

Si tenemos un código como el siguiente, todos los navegadores excepto Explorer saben tratar el nuevo DOM anidado…


<style type="text/css">
article { display: block; border: 1px solid red; }
</style>
...
<article>
<h1>Bienvenido a JavierCasares.com</h1>
<div>Esto es un mensaje de prueba.</div>
</article>

En este caso, el DOM debería ser anidado de forma que “article” incluye “h1″ que a su vez incluye “div”. Pero no, Explorer aún tiene que “article” está al mismo nivel que “h1″ que, en este caso, sí que incluye “div”.

La solución

El pollo gordo viene a ser que el DOM no tiene en cuenta los elementos como tales, por lo que “hay que crearlos” en Explorer y así los tendrá en cuenta a la hora de poder ofrecer diseño con CSS o ejecuciones de procesos con JavaScript.

para ello, hay que añadir en el “head” de nuestra página el siguiente código:


<!--[if IE]>
<script type="text/javascript">
var e = ("abbr,article,aside,audio,canvas,datalist,details,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video").split(',');
for (var i=0; i<e.length; i++) {
document.createElement(e[i]);
}
</script>
<![endif]-->

De esta forma creamos todos los nuevos elementos (tags) del HTML5 que no existen en versiones anteriores y “de repente” la web se verá igual que en el resto de navegadores si navegamos con Internet Explorer 8…

NOTA: no tengo Internet Explorer 7, por lo que no sé si funcionará en versiones anteriores… aunque la teoría dice que debería.

Ethek integra Live Messenger

He de reconocer que si hay un software que todo el mundo utiliza es Windows Live Messenger y no cabe duda de que cualquier integración de un sitio web sólo puede levar a ser un acierto.

Llevo varios meses planteándome integrar algún sistema de estos tan de moda ahora, y aposté en Ethek y en Windows Live ID, más concretamente en Windows Live Messenger Web. Estos días atrás alguien hizo que la chispa saltara y que mis pruebas en una máquina perdida del universo se acabasen convirtiendo en una versión beta que ha durado tan sólo 2 horas, para pasar a producción en cuanto tenía todas las funcionalidades en línea.

¿Qué es lo que he hecho?

Básicamente se resumen en 3 elementos:

  1. Integrar la Windows Live Messenger Bar (al pie de página).
  2. Integrar el Compartir elementos con los contactos.
  3. Añadir Windows Live Alerts.

Messenger Login

De todas las cosas, la más compleja ha sido la primera. El sistema necesita la instalación y configuración de la máquina de una forma especial, pero que permite navegar por toda la web sin perder las charlas abiertas. Además, nosotros no tenemos control en absoluto sobre el usuario o clave, de forma que es totalmente transparente para el usuario, ya que utiliza y puede dar permiso o quitarlo para que al acceder al sitio se conecte o no.

Barra de Messenger

Un elemento que, desde el punto de vista de marketing mola bastante, es lo de compartir. Con un clic, te permite seleccionar a los que están conectados y enviarles un mensaje diciéndoles que estás leyendo un artículo en Ethek. Además, se abre la ventana en ese momento y puedes mantener la charla allí mismo.

Compartir con contactos de Messenger

Lo último, lo de las alertas, está bien, ya que es el feed integrado en el messenger, de forma que, cuando se publique algo en la web le aparecerá una alerta a los usuarios que lo hayan aceptado.

Windows Live Alertas

Este es un primer paso que creo interesante dentro del ecosistema Ethek, y, aunque aún quedan dudas en este lanzamiento, pronto, seguro, que os cuento más detalles sobre como va avanzando.

Por cierto, no puedo poner la mano en el fuego, pero me atrevería a decir que esta es la primera web en España que utiliza este sistema… aunque, no puedo confirmarlo, ya que no parece haber ningún sitio donde haya un listado.