SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Le Web Offline
& les APIs de contrôle Javascript
Willy Leloutre - @wleloutre
lundi 16 septembre 13
Préambule
AppCache, LocalStorage,
SessionStorage, indexedDb, les
APIs HTML5 qui ne déconnectent
«jamais» !
Quelles sont les avantages et
limites ?
Quels sont les usages actuels et à
venir ?
lundi 16 septembre 13
Pourquoi ?
Pour stocker des
données dans le
navigateur
Pour utiliser vos web
apps en mode
déconnecté
Pour améliorer
l’expérience des
utilisateurs nomades
lundi 16 septembre 13
Le Web Storage
lundi 16 septembre 13
Le Web Storage (Dom Storage) c’est...
Session Storage : stockage de session
Local Storage : stockage local « durable »
Nb : La plupart des navigateurs utilisent SqLite pour
stocker ces données.
lundi 16 septembre 13
Le Web Storage 2010 - 20** !
lundi 16 septembre 13
Avant HTML5
Sur Internet Explorer 5,
il y avait userData.
Le Web Storage existait donc
avant HTML5 !
Mais...Internet Explorer avait
une longueur d’avance
alors !...
http://diveintohtml5.info/
storage.html
lundi 16 septembre 13
Cookies vs WebStorage
Un stockage « durable »
Une API très simple d’utilisation
Une plus grande capacité de stockage (5Mo / domaine) ou
plus selon la configuration du navigateur client
De meilleurs performances de chargement (3x à 5x plus rapide
qu’un cache natif)
Le Web Storage, est une nouvelle API qui a pour objectif
principal de corriger les défaillances rencontrées avec
l'utilisation des cookies.
lundi 16 septembre 13
En pratique
localStorage.setItem("name", "will");
var foo = localStorage.getItem("name");
console.log(foo);
localStorage.removeItem('name');
localStorage.clear();
lundi 16 septembre 13
Web Storage & Json
var personne = { yeux:"rouge", cheveux: "blond" };
localStorage.setItem("mapersonne",JSON.stringify(personne));
console.log(JSON.parse(localStorage.getItem("ma personne")));
Pour stocker des données plus complexes,
il faut les sérialiser avec Json.
Attention, pensez au Polyfill pour Internet Explorer «LT IE8»!
http://bestiejs.github.io/json3/
lundi 16 septembre 13
Cas d’utilisation
Twitter, avec le stockage du message en cours de
rédaction
Les préférence d'affichage pour une interface
d’administration
...
lundi 16 septembre 13
Can I Use Web storage ?
lundi 16 septembre 13
Application Cache
lundi 16 septembre 13
Comment ça fonctionne ?
En exploitant un cache spécifique permettant de
stocker des ressources consultables ultérieurement.
En anticipant les actions nécessaires ou non en offline
(pages statiques, images, vidéos, ...)
En re-synchronisant votre web app une fois la
connection retrouvée
lundi 16 septembre 13
En pratique
if(navigator.onLine) {
alert("Connecté !");
} else {
alert("Déconnecté :(");
}
Attention sur desktop, nous pouvons être connecté au
réseau mais pas au web, auquel cas, navigator.online
retourne «true»
lundi 16 septembre 13
Surveiller la connection
function goOnline() {
alert("Passage en connecté");
}
function goOffline() {
alert("Passage en déconnecté");
}
if(window.addEventListener {
window.addEventListener("online",goOnline,false);
window.addEventListener("offline",goOffline,false);
} else {
document.body.ononline = goOnline;
document.body.onoffline = goOffline;
}
lundi 16 septembre 13
Le manifest
Le manifeste est un simple fichier listant les autres
ressources nécessaires à la bonne exécution de
l'application web en mode déconnecté.
CACHE MANIFEST
# Version 2012-1
index.html
info.html
js/script.js
css/styles.css
img/image.jpg
http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js
lundi 16 septembre 13
Declarer le Manifest
Dans le DOM :
<!doctype html>
<html lang="fr" manifest="offline.appcache">
Dans le fichier .htaccess :
AddType text/cache-manifest .appcache
lundi 16 septembre 13
Cache, Network ou Fallback ?
CACHE : (par défaut) les fichiers mis en cache
explicitement
NETWORK : fichiers nécessitant à l'utilisateur d'être
connecté, qui court-circuitent le cache quoi qu'il arrive
FALLBACK : ressources de repli en offline pour
remplacer des ressources online qui ne peuvent être
cachées
lundi 16 septembre 13
Rafraîchir le cache
L'utilisateur efface volontairement le cache
Le fichier du manifeste change
Le cache est modifié par JavaScript
Attention, le navigateur n'ira chercher des nouveaux
contenus que dans 3 situations :
lundi 16 septembre 13
Les statuts
UNCACHED pas de cache associé
IDLE sans activité, le cache n’est pas marqué comme obsolète
CHECKING en cours de vérification
DOWNLOADING en phase de téléchargement
UPDATEREADY mise à jour prête
OBSOLETE cache marqué comme obsolète
window.applicationCache.status
lundi 16 septembre 13
Les événements
onchecking vérification en cours (premier déclenché)
onupdate le manifeste n'a pas bougé
ondownloading téléchargement du manifeste
onprogress téléchargement des fichiers
onupdateready mise à jour prête
oncached cache opérationnel
onobsolete cache obsolète effacé
onerror erreur quelconque
lundi 16 septembre 13
Les méthodes
update() déclenche le processus de vérification et de
mise à jour du cache
swapCache() passe au cache plus récent s'il est prêt
abort() arrêt des opérations
lundi 16 septembre 13
Exemple http://developers.whatwg.org/
lundi 16 septembre 13
Exemple : Gmail mobile
http://googlecode.blogspot.fr/2009/04/gmail-for-
mobile-html5-series-using.html
En 2009, Gmail pour mobile développé en
HTML5 dispose de l’API AppCache pour
fonctionner en offline.
lundi 16 septembre 13
Attention !
Sur desktop, nous pouvons être connecté au réseau mais pas au
web, auquel cas, navigator.online() retourne « true ».
Les tests nécessitent un serveur web (local).
Sur http://127.0.0.1 ça ne fonctionnera pas ! Il faut travailler sur un
domaine (ou localhost).
Le cache du Manifest est à part du cache navigateur, mais le
manifest lui même peut-être mis en cache dans le cache
"principal" du navigateur web !
lundi 16 septembre 13
Précaution supplémentaire
La solution est peut-être de modifier le fichier « .htaccess » pour le
faire expirer à la consultation du manifeste.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/cache-manifest "access"
</IfModule>
lundi 16 septembre 13
Can I Use AppCache ?
lundi 16 septembre 13
WebSQL
lundi 16 septembre 13
WebSql
Les specification ne sont plus maintenues
Le concept est rebasculé sur IndexedDB
Ce n'est pas vraiment du SQL mais plutôt un catalogue d'objet,
complexe à mettre en place, et mal supporté…
WebSQL est supporté pour les apps mobile hybrides
lundi 16 septembre 13
Can I Use WebSql ?
lundi 16 septembre 13
IndexedDb
lundi 16 septembre 13
IndexedDb
A mi-chemin entre Web Storage et Web SQL, IndexedDb propose
un mappage simple, mais offre en plus une compatibilité avec les
index du même type que ceux utilisés par les bases de données
relationnelles.
Par conséquent, la recherche d'objets correspondant à un champ
particulier est rapide, puisque vous n'avez pas à itérer manuellement
chaque objet.
https://developer.mozilla.org/fr/docs/IndexedDB/Using_IndexedDB
lundi 16 septembre 13
IndexedDb chez le W3C
lundi 16 septembre 13
Exemple
lundi 16 septembre 13
Can I Use IndexedDb ?
lundi 16 septembre 13
Conclusion
lundi 16 septembre 13
Web Storage, AppCache sont dès à présent
utilisables et leur potentiel dépend de votre
créativité !
lundi 16 septembre 13
Quelques liens
http://www.html5rocks.com/fr/features/storage
http://alistapart.com/article/application-cache-is-a-
douchebag
http://diveintohtml5.info/storage.html
http://appcachefacts.info/
http://www.alsacreations.com/article/lire/1402-web-
storage-localstorage-sessionstorage.html
lundi 16 septembre 13
MERCI !
Willy Leloutre - @wleloutre
Directeur Technique - La Mygale à Chaussette
Digital agency
lundi 16 septembre 13

Weitere ähnliche Inhalte

Andere mochten auch

Tarifs dentaitres en Europe / La France championne... du monde cher !
Tarifs dentaitres en Europe / La France championne... du monde cher !Tarifs dentaitres en Europe / La France championne... du monde cher !
Tarifs dentaitres en Europe / La France championne... du monde cher !CNSDnational
 
Audition mon travail au potager
Audition mon travail au potagerAudition mon travail au potager
Audition mon travail au potagerArfenia Sarkissian
 
L’heure et les chiffres
L’heure et les chiffresL’heure et les chiffres
L’heure et les chiffres011288
 
Dossier complet de la conférence internationale climat et défense du 14 oct...
Dossier complet de la conférence internationale climat et défense du 14 oct...Dossier complet de la conférence internationale climat et défense du 14 oct...
Dossier complet de la conférence internationale climat et défense du 14 oct...Stanleylucas
 
Analyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au NigerAnalyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au Nigervaléry ridde
 
Free care for the worst-off : 5 years of research in Burkina Faso
Free care for the worst-off : 5 years of research in Burkina Faso Free care for the worst-off : 5 years of research in Burkina Faso
Free care for the worst-off : 5 years of research in Burkina Faso valéry ridde
 
Présentation nouvelles mesures budgétaires
Présentation nouvelles mesures budgétairesPrésentation nouvelles mesures budgétaires
Présentation nouvelles mesures budgétairesSimarfi Consulting
 
текст для тренировки Mes etudes
текст для тренировки Mes etudesтекст для тренировки Mes etudes
текст для тренировки Mes etudesArfenia Sarkissian
 
Supplement international report russie
Supplement international report russieSupplement international report russie
Supplement international report russieLa Tribune
 
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTIC
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTICLes enjeux juridiques et stratégiques de la réforme de l'État au regard des NTIC
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTICgratispromihi
 
Défis Sentiers Océans
Défis Sentiers OcéansDéfis Sentiers Océans
Défis Sentiers Océansgevrard24
 
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)FAOLocust
 
Reglement prime adaptation logement
Reglement prime adaptation logementReglement prime adaptation logement
Reglement prime adaptation logementahup1
 
Programme de politique générale 2013-2018 Wavre
Programme de politique générale 2013-2018 WavreProgramme de politique générale 2013-2018 Wavre
Programme de politique générale 2013-2018 Wavreahup1
 
02 IV meet (fr) - darles - développement de toulouse
02 IV meet (fr) - darles - développement de toulouse02 IV meet (fr) - darles - développement de toulouse
02 IV meet (fr) - darles - développement de toulousewatershapes eu
 

Andere mochten auch (20)

Musee maisons-comtoises-nelly
Musee maisons-comtoises-nellyMusee maisons-comtoises-nelly
Musee maisons-comtoises-nelly
 
Tarifs dentaitres en Europe / La France championne... du monde cher !
Tarifs dentaitres en Europe / La France championne... du monde cher !Tarifs dentaitres en Europe / La France championne... du monde cher !
Tarifs dentaitres en Europe / La France championne... du monde cher !
 
Audition mon travail au potager
Audition mon travail au potagerAudition mon travail au potager
Audition mon travail au potager
 
L’heure et les chiffres
L’heure et les chiffresL’heure et les chiffres
L’heure et les chiffres
 
Dossier complet de la conférence internationale climat et défense du 14 oct...
Dossier complet de la conférence internationale climat et défense du 14 oct...Dossier complet de la conférence internationale climat et défense du 14 oct...
Dossier complet de la conférence internationale climat et défense du 14 oct...
 
Analyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au NigerAnalyse des effets de la gratuité des soins au Niger
Analyse des effets de la gratuité des soins au Niger
 
Historique de lyo1
Historique de lyo1Historique de lyo1
Historique de lyo1
 
Free care for the worst-off : 5 years of research in Burkina Faso
Free care for the worst-off : 5 years of research in Burkina Faso Free care for the worst-off : 5 years of research in Burkina Faso
Free care for the worst-off : 5 years of research in Burkina Faso
 
Dance
DanceDance
Dance
 
Présentation nouvelles mesures budgétaires
Présentation nouvelles mesures budgétairesPrésentation nouvelles mesures budgétaires
Présentation nouvelles mesures budgétaires
 
13
1313
13
 
текст для тренировки Mes etudes
текст для тренировки Mes etudesтекст для тренировки Mes etudes
текст для тренировки Mes etudes
 
Supplement international report russie
Supplement international report russieSupplement international report russie
Supplement international report russie
 
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTIC
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTICLes enjeux juridiques et stratégiques de la réforme de l'État au regard des NTIC
Les enjeux juridiques et stratégiques de la réforme de l'État au regard des NTIC
 
Défis Sentiers Océans
Défis Sentiers OcéansDéfis Sentiers Océans
Défis Sentiers Océans
 
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)
Menace acridien au Sahel 2012 (4 oct 2012 mise à jour)
 
Reglement prime adaptation logement
Reglement prime adaptation logementReglement prime adaptation logement
Reglement prime adaptation logement
 
Facebook pour les pros
Facebook pour les prosFacebook pour les pros
Facebook pour les pros
 
Programme de politique générale 2013-2018 Wavre
Programme de politique générale 2013-2018 WavreProgramme de politique générale 2013-2018 Wavre
Programme de politique générale 2013-2018 Wavre
 
02 IV meet (fr) - darles - développement de toulouse
02 IV meet (fr) - darles - développement de toulouse02 IV meet (fr) - darles - développement de toulouse
02 IV meet (fr) - darles - développement de toulouse
 

Ähnlich wie Le Web Offline & les APIs de contrôle Javascript

Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWinslo Nwan
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...DEFO KUATE Landry
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cacheMichael Nokhamzon
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 
CocoaHeads Lyon - Mode Déconnecté dans une app iOS
CocoaHeads Lyon - Mode Déconnecté dans une app iOSCocoaHeads Lyon - Mode Déconnecté dans une app iOS
CocoaHeads Lyon - Mode Déconnecté dans une app iOSClaire Reynaud
 
Joomla : Akeeba Backup et Amazon S3
Joomla : Akeeba Backup et Amazon S3Joomla : Akeeba Backup et Amazon S3
Joomla : Akeeba Backup et Amazon S3Marc DECHEVRE
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web MobileWilly Leloutre
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilitemikeh
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Accelerated Mobile Pages : Quel impact sur votre SEO ?
Accelerated Mobile Pages : Quel impact sur votre SEO ?Accelerated Mobile Pages : Quel impact sur votre SEO ?
Accelerated Mobile Pages : Quel impact sur votre SEO ?Peak Ace
 
Accelerated Mobile Pages
Accelerated Mobile PagesAccelerated Mobile Pages
Accelerated Mobile PagesPhilippe YONNET
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 

Ähnlich wie Le Web Offline & les APIs de contrôle Javascript (20)

Google App Engine - INTRO
Google App Engine - INTROGoogle App Engine - INTRO
Google App Engine - INTRO
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cache
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 
CocoaHeads Lyon - Mode Déconnecté dans une app iOS
CocoaHeads Lyon - Mode Déconnecté dans une app iOSCocoaHeads Lyon - Mode Déconnecté dans une app iOS
CocoaHeads Lyon - Mode Déconnecté dans une app iOS
 
Joomla : Akeeba Backup et Amazon S3
Joomla : Akeeba Backup et Amazon S3Joomla : Akeeba Backup et Amazon S3
Joomla : Akeeba Backup et Amazon S3
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web Mobile
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilite
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Drupal & Mobilité
Drupal & MobilitéDrupal & Mobilité
Drupal & Mobilité
 
Accelerated Mobile Pages : Quel impact sur votre SEO ?
Accelerated Mobile Pages : Quel impact sur votre SEO ?Accelerated Mobile Pages : Quel impact sur votre SEO ?
Accelerated Mobile Pages : Quel impact sur votre SEO ?
 
Accelerated Mobile Pages
Accelerated Mobile PagesAccelerated Mobile Pages
Accelerated Mobile Pages
 
Serveur Web (2)
Serveur Web (2)Serveur Web (2)
Serveur Web (2)
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Présentation OSGI
Présentation OSGIPrésentation OSGI
Présentation OSGI
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 

Mehr von Willy Leloutre

Il était une fois le Marketing digital
Il était une fois le Marketing digitalIl était une fois le Marketing digital
Il était une fois le Marketing digitalWilly Leloutre
 
Numérique et médiation handicap
Numérique et médiation handicapNumérique et médiation handicap
Numérique et médiation handicapWilly Leloutre
 
L’accessibilité web pour les organismes publics
L’accessibilité web pour les organismes publicsL’accessibilité web pour les organismes publics
L’accessibilité web pour les organismes publicsWilly Leloutre
 
Les nouvelles perspectives SEO - E-marketing en 2013
Les nouvelles perspectives SEO - E-marketing en 2013Les nouvelles perspectives SEO - E-marketing en 2013
Les nouvelles perspectives SEO - E-marketing en 2013Willy Leloutre
 

Mehr von Willy Leloutre (6)

Il était une fois le Marketing digital
Il était une fois le Marketing digitalIl était une fois le Marketing digital
Il était une fois le Marketing digital
 
NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
Numérique et médiation handicap
Numérique et médiation handicapNumérique et médiation handicap
Numérique et médiation handicap
 
Le HTML5 & les API
Le HTML5 & les APILe HTML5 & les API
Le HTML5 & les API
 
L’accessibilité web pour les organismes publics
L’accessibilité web pour les organismes publicsL’accessibilité web pour les organismes publics
L’accessibilité web pour les organismes publics
 
Les nouvelles perspectives SEO - E-marketing en 2013
Les nouvelles perspectives SEO - E-marketing en 2013Les nouvelles perspectives SEO - E-marketing en 2013
Les nouvelles perspectives SEO - E-marketing en 2013
 

Le Web Offline & les APIs de contrôle Javascript

  • 1. Le Web Offline & les APIs de contrôle Javascript Willy Leloutre - @wleloutre lundi 16 septembre 13
  • 2. Préambule AppCache, LocalStorage, SessionStorage, indexedDb, les APIs HTML5 qui ne déconnectent «jamais» ! Quelles sont les avantages et limites ? Quels sont les usages actuels et à venir ? lundi 16 septembre 13
  • 3. Pourquoi ? Pour stocker des données dans le navigateur Pour utiliser vos web apps en mode déconnecté Pour améliorer l’expérience des utilisateurs nomades lundi 16 septembre 13
  • 4. Le Web Storage lundi 16 septembre 13
  • 5. Le Web Storage (Dom Storage) c’est... Session Storage : stockage de session Local Storage : stockage local « durable » Nb : La plupart des navigateurs utilisent SqLite pour stocker ces données. lundi 16 septembre 13
  • 6. Le Web Storage 2010 - 20** ! lundi 16 septembre 13
  • 7. Avant HTML5 Sur Internet Explorer 5, il y avait userData. Le Web Storage existait donc avant HTML5 ! Mais...Internet Explorer avait une longueur d’avance alors !... http://diveintohtml5.info/ storage.html lundi 16 septembre 13
  • 8. Cookies vs WebStorage Un stockage « durable » Une API très simple d’utilisation Une plus grande capacité de stockage (5Mo / domaine) ou plus selon la configuration du navigateur client De meilleurs performances de chargement (3x à 5x plus rapide qu’un cache natif) Le Web Storage, est une nouvelle API qui a pour objectif principal de corriger les défaillances rencontrées avec l'utilisation des cookies. lundi 16 septembre 13
  • 9. En pratique localStorage.setItem("name", "will"); var foo = localStorage.getItem("name"); console.log(foo); localStorage.removeItem('name'); localStorage.clear(); lundi 16 septembre 13
  • 10. Web Storage & Json var personne = { yeux:"rouge", cheveux: "blond" }; localStorage.setItem("mapersonne",JSON.stringify(personne)); console.log(JSON.parse(localStorage.getItem("ma personne"))); Pour stocker des données plus complexes, il faut les sérialiser avec Json. Attention, pensez au Polyfill pour Internet Explorer «LT IE8»! http://bestiejs.github.io/json3/ lundi 16 septembre 13
  • 11. Cas d’utilisation Twitter, avec le stockage du message en cours de rédaction Les préférence d'affichage pour une interface d’administration ... lundi 16 septembre 13
  • 12. Can I Use Web storage ? lundi 16 septembre 13
  • 14. Comment ça fonctionne ? En exploitant un cache spécifique permettant de stocker des ressources consultables ultérieurement. En anticipant les actions nécessaires ou non en offline (pages statiques, images, vidéos, ...) En re-synchronisant votre web app une fois la connection retrouvée lundi 16 septembre 13
  • 15. En pratique if(navigator.onLine) { alert("Connecté !"); } else { alert("Déconnecté :("); } Attention sur desktop, nous pouvons être connecté au réseau mais pas au web, auquel cas, navigator.online retourne «true» lundi 16 septembre 13
  • 16. Surveiller la connection function goOnline() { alert("Passage en connecté"); } function goOffline() { alert("Passage en déconnecté"); } if(window.addEventListener { window.addEventListener("online",goOnline,false); window.addEventListener("offline",goOffline,false); } else { document.body.ononline = goOnline; document.body.onoffline = goOffline; } lundi 16 septembre 13
  • 17. Le manifest Le manifeste est un simple fichier listant les autres ressources nécessaires à la bonne exécution de l'application web en mode déconnecté. CACHE MANIFEST # Version 2012-1 index.html info.html js/script.js css/styles.css img/image.jpg http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js lundi 16 septembre 13
  • 18. Declarer le Manifest Dans le DOM : <!doctype html> <html lang="fr" manifest="offline.appcache"> Dans le fichier .htaccess : AddType text/cache-manifest .appcache lundi 16 septembre 13
  • 19. Cache, Network ou Fallback ? CACHE : (par défaut) les fichiers mis en cache explicitement NETWORK : fichiers nécessitant à l'utilisateur d'être connecté, qui court-circuitent le cache quoi qu'il arrive FALLBACK : ressources de repli en offline pour remplacer des ressources online qui ne peuvent être cachées lundi 16 septembre 13
  • 20. Rafraîchir le cache L'utilisateur efface volontairement le cache Le fichier du manifeste change Le cache est modifié par JavaScript Attention, le navigateur n'ira chercher des nouveaux contenus que dans 3 situations : lundi 16 septembre 13
  • 21. Les statuts UNCACHED pas de cache associé IDLE sans activité, le cache n’est pas marqué comme obsolète CHECKING en cours de vérification DOWNLOADING en phase de téléchargement UPDATEREADY mise à jour prête OBSOLETE cache marqué comme obsolète window.applicationCache.status lundi 16 septembre 13
  • 22. Les événements onchecking vérification en cours (premier déclenché) onupdate le manifeste n'a pas bougé ondownloading téléchargement du manifeste onprogress téléchargement des fichiers onupdateready mise à jour prête oncached cache opérationnel onobsolete cache obsolète effacé onerror erreur quelconque lundi 16 septembre 13
  • 23. Les méthodes update() déclenche le processus de vérification et de mise à jour du cache swapCache() passe au cache plus récent s'il est prêt abort() arrêt des opérations lundi 16 septembre 13
  • 25. Exemple : Gmail mobile http://googlecode.blogspot.fr/2009/04/gmail-for- mobile-html5-series-using.html En 2009, Gmail pour mobile développé en HTML5 dispose de l’API AppCache pour fonctionner en offline. lundi 16 septembre 13
  • 26. Attention ! Sur desktop, nous pouvons être connecté au réseau mais pas au web, auquel cas, navigator.online() retourne « true ». Les tests nécessitent un serveur web (local). Sur http://127.0.0.1 ça ne fonctionnera pas ! Il faut travailler sur un domaine (ou localhost). Le cache du Manifest est à part du cache navigateur, mais le manifest lui même peut-être mis en cache dans le cache "principal" du navigateur web ! lundi 16 septembre 13
  • 27. Précaution supplémentaire La solution est peut-être de modifier le fichier « .htaccess » pour le faire expirer à la consultation du manifeste. <IfModule mod_expires.c> ExpiresActive on ExpiresByType text/cache-manifest "access" </IfModule> lundi 16 septembre 13
  • 28. Can I Use AppCache ? lundi 16 septembre 13
  • 30. WebSql Les specification ne sont plus maintenues Le concept est rebasculé sur IndexedDB Ce n'est pas vraiment du SQL mais plutôt un catalogue d'objet, complexe à mettre en place, et mal supporté… WebSQL est supporté pour les apps mobile hybrides lundi 16 septembre 13
  • 31. Can I Use WebSql ? lundi 16 septembre 13
  • 33. IndexedDb A mi-chemin entre Web Storage et Web SQL, IndexedDb propose un mappage simple, mais offre en plus une compatibilité avec les index du même type que ceux utilisés par les bases de données relationnelles. Par conséquent, la recherche d'objets correspondant à un champ particulier est rapide, puisque vous n'avez pas à itérer manuellement chaque objet. https://developer.mozilla.org/fr/docs/IndexedDB/Using_IndexedDB lundi 16 septembre 13
  • 34. IndexedDb chez le W3C lundi 16 septembre 13
  • 36. Can I Use IndexedDb ? lundi 16 septembre 13
  • 38. Web Storage, AppCache sont dès à présent utilisables et leur potentiel dépend de votre créativité ! lundi 16 septembre 13
  • 40. MERCI ! Willy Leloutre - @wleloutre Directeur Technique - La Mygale à Chaussette Digital agency lundi 16 septembre 13