Passa al contingut principal

Trabaja offline gracias a la API de caché de HTML5

Trabaja offline gracias a la API de caché de HTML5:

HTML5

HTML5 ha abierto las puertas a un nuevo mundo a la hora de que nuestras aplicaciones puedan funcionar de forma desconectada.

En la actualidad, tenemos la posibilidad de almacenar información de forma local a la aplicación mediante los interfaces disponibles con localStorage, Web SQL Database o IndexedDB. Estas características tan interesantes, pueden no ser suficientes si la página en las que se van a implementar no puede ser cargada por el navegador debido a la falta de conectividad.

Es por ello que en la especificación de HTML5, se recogen mecanismos para detallar qué páginas debe cachear nuestro navegador para que estén siempre disponibles y cómo vamos a poder saber en qué modo de trabajo estamos en un momento dado.

Offline Application Caching API

La configuración de los recursos de una aplicación que deben poder ser accedidos cuando no se tiene conexión a Internet, están definidos íntegramente en un fichero llamado Cache Manifest File.

Este fichero de definición permite listar los recursos a registrar por el navegador para ser mostrados cuando pase a modo offline.

Para ello, debemos definir la propiedad manifest a nivel del mismo tag HTML principal, indicando la URL de acceso al fichero de definición de la cache:

<!DOCTYPE html> <html manifest="/cache.manifest"> <head> <meta charset="utf-8" /> </head> <body> <h1>Esta página es offline</h1> </body> </html>

Aunque el fichero puede ser alojando en cualquier URL de nuestro servidor, es muy importante que se sirva con un Content Type adecuado, ya que el tipo esperado será siempre text/cache-manifest.

Si estamos utilizando Apache, es muy probable que tengamos que definir este nuevo tipo de contenido añadiendo la siguiente directiva a la configuración principal del servidor o a un fichero .htaccess:

AddType text/cache-manifest .manifest

El fichero Cache Manifest

El fichero servido deberá comenzar siempre con el texto CACHE MANIFEST en la primera línea, listando a continuación todos los recursos a considerar.

Si alguno de los elementos que hay en la cache puede variar en el tiempo por alguna modificación que debamos realizar, lo más recomendable es añadir al fichero un marca de la versión del mismo para que el navegador pueda detectar que ha cambiado:

CACHE MANIFEST # rev 2 /genbetadev/html5-cache/index.html 

Como aspecto más avanzado, comentar que en este tipo de ficheros podemos definir exclusiones para caracterizar los recursos que siempre tendrán que ser online y no deberían de cachearse:

CACHE MANIFEST # rev 3 images/imagen1.png images/imagen2.png NETWORK: comm.cgi CACHE: style/default.css

En cualquier caso, si lo que queremos es simplemente que se muestre una página de aviso al pasar al modo offline, entonces podemos utilizar la sección FALLBACK de nuestro fichero de definición. Con FALLBACK, podemos definir la página a mostrar cuando se accede a un recurso concreto y estamos en modo offline:

CACHE MANIFEST FALLBACK: / /offline.html

Por último, en la siguiente página podemos encontrar un ejemplo que podemos cargar cuando estamos offline y, si desconectamos el acceso a Internet, podremos seguir viendo sin problemas gracias a la cache:

Ejemplo de aplicacion offline

NOTA: En Firefox podemos activar el modo offline accediendo al menú “Archivo -> Trabajar sin conexión”.

Detección de la activación del modo offline

Es bastante habitual que, en algunos navegadores como Firefox, el almacenamiento de páginas para su uso offline conlleve que se muestre al usuario una alerta especial:

Aviso página con contenido marcado como offline Firefox

De igual forma, es necesario en muchos casos saber si el navegador está en modo online a la hora de lanzar o no una operación de sincronización. Aunque podemos conseguir esto de forma directa intentando abrir una conexión y comprobando si ha sido posible establecerla o no, el navegador nos proporciona una forma bastante más elegante de hacerlo.

El método definido en la especificación a tal efecto consiste en la incorporación del atributo onLine, el cual se define a nivel del objeto JavaScript Navigator:

<!DOCTYPE html> <html> <head> <title>Estado online/offline</title> <script> function updateIndicator() { var indicator = document.getElementById('indicator'); indicator.textContent = navigator.onLine ? 'online' : 'offline'; } </script> </head> <body onload="updateIndicator()"> <p>La red está <span id="indicator">(estado)</span> </body> </html>

Adicionalmente, si queremos detectar cuando el navegador pasa a modo online u offline, existen dos eventos a tal efecto a nivel del objeto Window:

<!DOCTYPE html> <html> <head> <script> document.addEventListener('offline', function(e) { alert('Offline'); }); document.addEventListener('online', function(e) { alert('Online') }); </script> </head> <body> </body> </html>
<!DOCTYPE html> <html> <body ononline="alert('Online');" onoffline="alert('Offline');"> </body> </html>

Para finalizar esta entrega, a continuación podemos ver un ejemplo de cómo Firefox detecta el cambio de estado en la conexión:

Ejemplo de evento para modo offline en Firefox



Demo online | Uso cache API
Demo online | Eventos cambio de estado
En Genbeta Dev | Introducción al almacenamiento de variables en el cliente con HTML5



Comentaris

Entrades populars d'aquest blog

10 alternativas a Cuevana para ver películas online

10 alternativas a Cuevana para ver películas online : Durante este último tiempo, en Cuevana se sucedieron varios “problemas” por los cuales hubo que ajustar algunas cosas antes de tiempo (como el rediseño del sitio), que dejaron a algunos usuarios ciertos problemas para acceder a las películas o series del portal. Pero realmente esto es algo que no incumbe a los usuarios y, como sabemos, existen muchas otras alternativas a Cuevana dando vueltas por Internet, que intentaremos presentar aquí mismo. Los sitios que repasaremos funcionan del mismo modo que Cuevana, mediante la instalación de un plugin que permite visualizar los videos de Megaupload o WUShare, entre otros servicios, en una calidad de imágen realmente excelente. Tal como sucede con el más popular servicio, todos ellos tienen publicidad que en algunos casos resulta insoportable, pero como dice Federico en DotPod “a caballo regalado no se le miran los dientes”. Alternativas a Cuevana 1. Moviezet Posiblemente el mejor clon d...

Learn Composition from the Photography of Henri Cartier-Bresson

“Do you see it?” This question is a photographic mantra. Myron Barnstone , my mentor, repeats this question every day with the hopes that we do “see it.” This obvious question reminds me that even though I have seen Cartier-Bresson’s prints and read his books, there are major parts of his work which remain hidden from public view. Beneath the surface of perfectly timed snap shots is a design sensibility that is rarely challenged by contemporary photographers. Henri Cartier-Bresson. © Martine Franck Words To Know 1:1.5 Ratio: The 35mm negative measures 36mm x 24mm. Mathematically it can be reduced to a 3:2 ratio. Reduced even further it will be referred to as the 1:1.5 Ratio or the 1.5 Rectangle. Eyes: The frame of an image is created by two vertical lines and two horizontal lines. The intersection of these lines is called an eye. The four corners of a negative can be called the “eyes.” This is extremely important because the diagonals connecting these lines will form the breakdown ...

Más de 50 de las mejores herramientas online para profesores

No es una exageración afirmar que hay ciento de aplicaciones educativas por ahí por la red, para todos los gustos y de todos los colores, por lo que es difícil tratar de recogerlas todas en un listado. Sin embargo, algunas destacan más que otras por su innovación y por su capacidad para conseguir adeptos, y esas son las que protagonizan la presente recopilación. Son 50 interesantes herramientas online basadas en las recopilaciones de EduArea , las muchas ya tratadas en Wwwhat’s new y las destacadas por la experiencia. 1. Dropbox : Un disco duro virtual con varios GB gratuitos y al que se accede desde casi cualquier dispositivo. Sin embargo, es muchísimo más que eso, de hecho ya comentamos 20 razones . 2. Google Drive : La evolución de Google Docs que suma a sus múltiples herramientas de creación de documentos, un considerable espacio virtual gratuito. 3. CloudMagic : Una extensión y una app multidispositivo para buscar información simultáneamente en Gmail, Twitter, Facebook, Evernote ...