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.

70a6e5c61ba886bbdea1401197def8c7?s=128

Benoît Merlet

May 28, 2013
Tweet

More Decks by Benoît Merlet

Other Decks in Technology

Transcript

  1. Tout sur les caches Web Thème Développement Web Solutions Linux,

    Libres et Open Source 2013
  2. Me, Myself & I

  3. 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
  4. Quelques constats

  5. 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)
  6. 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
  7. Dans ces conditions, comment être efficace ?

  8. Performance Web

  9. 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
  10. Rappel des bases

  11. 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
  12. Exemple

  13. Cache HTTP

  14. 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
  15. 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
  16. 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
  17. 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>
  18. Informations de validation • Principe du goûteur • En-têtes à

    utiliser ETag: "<string>" Last-Modified: <datetime>
  19. Pour aller plus loin

  20. 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>
  21. Principe de fonctionnement d'un cache passerelle

  22. Le mot de la fin

  23. 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.