jesus.perezpaz.es

Auto-generar cache.manifest con PHP

Si no quieres leer la entrada entera, puedes obtener el código (y proponer cambios, por supuesto) en github: https://github.com/tx2z/autogenerated-cache.manifest-php

Una funcionalidad muy interesante en HTML5 es la posibilidad de crear aplicaciones o páginas web que funcionen offline (sin conexión a Internet) a través de un archivo cache.manifest. Estas páginas pueden ser vistas cuando el usuario no dispone de una conexión a Internet, lo que hoy en día, con las malas coverturas móviles que muchos sufrimos en algunos lugares, es algo habitual. También es una buena idea cuando se usan buenas conexiones, porque el usuario no tiene que descargar todos los datos de la página y la carga es más rápida.

Si, es muy interesante, pero si has intentado crear un archivo cache.manifest alguna vez te habrás dado cuenta del tiempo y esfuerzo que supone mantenerlo, ya que tienes que actualizarlo cada vez que añades o cambias un archivo en tu aplicación / web.

Por esta razón busqué la manera más fácil de generar este archivo y encontré que es realmente sencillo hacerlo con PHP (seguramente también con otros lenguajes de programación a nivel de servidor).

Mira el código para ver lo fácil que es:

Creo que no necesita mucha explicación, pero allá vamos:

– Primero declaramos que el archivo es del tipo cache.manifest y escribimos “CACHE MANIFEST” en la primera línea:

– Casi todo se hace con la función “create_maniest” que pasa por todos los archivos y carpetas de la carpeta definida en la variable $folder.
Dentro de la función creamos un array, $dir, que contiene todos los archivos/carpetas, gracias a la clase “RecursiveDirectoryIterator“. Luego hacemos un “foreach” de este array y recuperamos el path de cada archivo con “pathinfo“.
Entonces, si el objeto es un archivo (no una carpeta), no se llama manifest.php (porque realmente no queremos meter en cache nuestro archivo manifest, lo que haría casi imposible su actualización) y no es un “dotfile”, imprimirmos su resultado en la página, remplazando los espacios por “%20” (Esto no es realmente necesario, ya que al crear tu web o aplicación has creado tus URLs y nombrado tus archivos de forma correcta… 😛 ).
Finalmente, añadimos el hash md5 del archivo a la variable $hashes (explicaré esto más tarde).

– Sólo queda llamar a la función definiendo el directorio que queremos añadir a el cache.manifest. Podemso añadir un punto(.) si queremos incluir todo.

– Finalmente, si cambiamos el contenido de un archivo sin cambiar su nombre (si actualizamos una imagen por ejemplo) el navegador no va a saber que el archivo ha cambiado y va a usar la versión guardada en cache. Pero si el cache.manifest cambia, el navegador descarga de nuevo en cache todo el contenido.
Imprimiendo la variable $hashes (que es diferente cada vez que un archivo cambia) nos aseguramos que el navegador va a descargar de nuevo todos los archivos si cambiamos cualquier cosa.

Y eso es todo. Sólo quedaría añadirlo a nuestro archivo HTML después del “doctype“:

Con esto hemos generado automáticamente un archivo cache.manifest que no necesitamos actualizar nuca (porque ya se actualiza el sólo 🙂 )

Podéis verlo funcionando, por ejemplo, en la versión para tables de los compilados de Revista Exégesis: http://www.revista-exegesis.com/publicaciones/2059/

Ir a la portada → ← Volver artás

Comentarios

Un comentario

  1. Armando says:

    Hola Jesús, este archivo se puede utilizar en wordpress?

Dejar un comentario

Tu dirección de email no será publicada