Cargar una página por bloques

Normalmente cuando desarrollamos una página web no nos preocupamos en exceso cómo enviamos la información a los usuarios que se conectan a ella, dejando que el sistema lo haga de forma automática. Eso no es del todo malo, pero hace que la paralelización de la que alguna vez os he hablado se pueda perder en parte.

Sabemos que en muchas ocasiones en la cabecera de una página incluimos los CSS y JS, y que estos pueden llegar a bloquear nuestra carga de página. Teniendo en cuenta que la cabecera en sí “no hace nada” ¿por qué no enviarla en cuanto la tengamos? Esto significaría que, una vez la mandemos, antes de pintar nada, y mientras calculamos el contenido de la página que verá el usuario, podemos enviar cierta información y el navegador puede comenzar la descarga de elementos externos como los que comentaba antes.

Para hacer esto, y como seguro que usaremos gzip, en PHP podríamos utilizar algunas funciones como ob_flush().

A partir de este momento, en el que ya hemos enviado la cabecera de la página, hay que decidir si nuestro sitio está preparado para ser enviado por partes. Normalmente las páginas tiene diversos bloques que no suelen estar contenidos dentro de otros. De esta forma podríamos dividir lo que se muestra al usuario en una cabecera, un contenido, un menú lateral y un pie. cada uno de estos bloques, al ser independiente del otro, podrían llevar, entre uno y otro, estas funciones flush, y así el sistema sería capaz de ir pintando la página sin dependencias entre cada uno de estos bloques, y la sensación de carga sería mayor, ya que estará “precargado” el CSS y JS, que se cargan antes de que se reciba toda la página.

El último de los bloques no necesita llevar este elemento. Eso sí, para que esto funcione realmente hace falta seguir las normas que dicen que los JavaScript que no afectan al “pintado” de la página se encuentren en el pie, y que los que sí afectan se encuentren en la cabecera.

Ahora sólo queda implementarlo y ver si hace efecto…

Deja un comentario