Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tout sur les caches Web

Tout sur les caches Web

Présentation pour le thème Développement Web de Solutions Linux, Libres et Open Source 2013.

De nos jours, les sites et les applications Web à succès absorbent une charge conséquente.

La première idée pour pouvoir répondre aux sollicitations est d'augmenter la puissance des serveurs.

L'alternative est d'intégrer la problématique dès la phase d'architecture du projet pour bénéficier des solutions de cache HTTP.

Benoît Merlet

May 28, 2013
Tweet

More Decks by Benoît Merlet

Other Decks in Technology

Transcript

  1. Benoît Merlet Je suis Architecte Web chez Alter Way pour

    apporter à nos clients mon expertise des technologies du Web. Je détiens les diplômes d'Ingénieur de l'ENSIIE et du Master Parisien de Recherche Opérationnelle. Je suis un fervent utilisateur de logiciels libres et donc un contributeur à mes heures perdues. • https://speakerdeck.com/trompette • https://twitter.com/trompouet • https://github.com/trompette
  2. Complexité du Web • 30 avril 1993 • Naissance du

    World Wide Web • Communiqué du CERN : https://cds.cern.ch/record/1164399 • Premier site Web : http://info.cern.ch/hypertext/WWW/TheProject.html • Aujourd'hui • Toujours plus de types de contenu, de volume de données, de dynamisme • Nouvelles technologies (HTML5, CSS3, Javascript, WebGL, ...) • Nouveaux protocoles (SPDY, Websocket, HTTP 2.0)
  3. Diversité du Web • Différents types de contenu • Textuel

    (HTML, CSS, Javascript, JSON, XML, ...) • Binaire (Multimédia, PDF, archives, ...) • Différents types d'interaction • Requête synchrone ou asynchrone • Réponse statique ou dynamique • Différents types de client • Navigateur sur ordinateur de bureau, tablette tactile, smartphone, télévision, … • Application consommatrice de services Web • Robot d'indexation de pages
  4. Un vaste sujet • Enjeux • Maîtrise de l'expérience de

    navigation • Réduction du temps de chargement des pages • Réduction des besoins en ressources serveur • Optimisation de la bande passante réseau • Aperçu des techniques • Côté client : utilisation du cache navigateur, envoi des requêtes en parallèle, chargement paresseux • Côté serveur : mise en place de caches, concaténation/minimisation/compression des contenus • Côté réseau : connexions persistantes, pipelining des requêtes, utilisation de CDN
  5. HTTP : la base du Web Requête • Ligne de

    commande • Lignes d'en-têtes • Ligne vide • Corps Réponse • Ligne de statut • Lignes d'en-têtes • Ligne vide • Corps
  6. Principe de fonctionnement Partie intégrante du protocole • Chapitre 13

    de la RFC 2616 Intermédiaire entre client et serveur • Transparent pour le client • Nécessité d'adapter le serveur Zone de stockage des réponses • L'URI est la clé de stockage
  7. Deux types de cache Cache privé • Dans le navigateur

    • Associé à un seul client • Petite taille Cache partagé • Sur le réseau • Commun à plusieurs clients • Taille arbitraire
  8. Pilotage des caches • L'application peut piloter les caches via

    des en-têtes de réponse • Chaque en-tête permet d'altérer le comportement des caches • Type de la réponse Cache-Control: private Cache-Control: public • Liste des en-têtes de requête qui font varier la réponse Vary: Accept-Encoding, Cookie, User-Agent • Informations d'expiration • Informations de validation
  9. Informations d'expiration • Principe de la date de péremption •

    En-têtes à utiliser Expires: <datetime> Cache-Control: max-age=<seconds> Cache-Control: s-maxage=<seconds>
  10. Informations de validation • Principe du goûteur • En-têtes à

    utiliser ETag: "<string>" Last-Modified: <datetime>
  11. Edge Side Includes • RFC proposée par Akamai (CDN) •

    Ajout de balises spéciales dans le code HTML • Traitement des balises par un cache passerelle <!DOCTYPE html> <html> <body> <!-- ... --> <esi:include src="http://example.org/fragment.html" /> <!-- ... --> </body> </html>
  12. Conclusion • Les caches Web peuvent contribuer à la performance

    de votre site • Amélioration du ressenti des visiteurs • Maîtrise du comportement des navigateurs • Économies en bande passante • Ménagement des serveurs • Mais ils nécessitent des adaptations dans votre application • Utilisation explicite d'en-têtes lors de l'envoi des réponses • Découpage des pages en fragments pour pouvoir bénéficier des ESI Conseil d'ami : prenez en compte la problématique dès la conception de l'application.