«Cachez-moi cette page!»

Documents pareils
L3 informatique TP n o 2 : Les applications réseau

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

(structure des entêtes)

Réseaux. 1 Généralités. E. Jeandel

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Proxies,, Caches & CDNs

Protocoles Applicatifs

INF8007 Langages de script

Le point sur les services en ligne employeurs

Serveurs de noms Protocoles HTTP et FTP

Administration Linux - Proxy

Dans l'épisode précédent

Introduction à HTTP. Chapitre HTTP 0.9

Qui sommes-nous? Buddyweb est une agence digitale spécialisée dans les projets web et mobiles.

Protection des protocoles

Plateforme publicitaire Entreprendre. Guide de normes

Les bonnes pratiques. de l hébergement d un CMS

Le serveur HTTPd WASD. Jean-François Piéronne

Tour d horizon des CMS. Content Management System

ADF Reverse Proxy. Thierry DOSTES

Mise à jour : janvier 2015 POURQUOI ET COMMENT OPTIMISER LES VISUELS

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

GESTION DES CONNAISSANCES AU GEIPAN

Performance, rendement Vs Evolutivité

Le Portfolio d une... Marion Bossaton. #Curieuse #Créative #Connectée

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Stockage du fichier dans une table mysql:

Web des services : REST

Aide à la Détection de Faiblesses d un site Web Mandataire inverse, Modsecurity

Performance Front-End

Avantages et méthode de la bonne gouvernance d'entreprise - le cas pratique des PSF

SERVEUR HTTP Administration d apache

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

PLATEFORME GRAPHIQUE INSTITUT DU NOUVEAU MONDE

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Retour d expérience sur la mise en place d une solution de répartition de charge entièrement libre.

Hébergement de site web Damien Nouvel

Caches web. Olivier Aubert 1/35

Application Web et J2EE

Tests de montée en charge avec Tsung

Pollution, stress, fatigue, déplacement : Où en êtes-vous avec la mobilité?

2011 Hakim Benameurlaine 1

4. SERVICES WEB REST 46

Internet. Web Sécurité Optimisation

Technologie des Serveurs Internet. Langage Perl

CGI et SSI. La programmation CGI. Sources. Objectifs. Qu'est ce qu'un programme CGI? CGI

Sécurité des applications Web

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Bien architecturer une application REST

ATHOMEMAGAZINE. Les prix de l immobilier au Luxembourg!

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Linux sécurité des réseaux

Gérer une forte charge avec ez Publish Obtenir la meilleure réactivité de publication. Solutions natives ez. Solution spécifique.

Architectures Web Services RESTful

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Programmation Web. Madalina Croitoru IUT Montpellier

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

API ONE-TIME PASSWORD

Squid. Olivier Aubert 1/19

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Trusteer Pour la prévention de la fraude bancaire en ligne

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

REPARTITION DE CHARGE LINUX

Développement Web. Les protocoles

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Développement des Systèmes d Information

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

e-commerce+ Solution globale e-commerce Trafic web E-commerce BtoB Travailler les contenus d'un site e-commerce : un critère de qualité

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Module pour la solution e-commerce Magento

Élaborer une charte graphique. Comment élaborer une charte graphique?

Les Content Delivery Network (CDN)

Introduction à ElasticSearch

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

Conduite et présentation des activités professionnelles. Prénom NOM BTS Assurance. Session 20XX

Couche application 1

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Mise en place d un serveur Proxy sous Ubuntu / Debian

Gestion du cache dans les applications ASP.NET

Vulnérabilités et sécurisation des applications Web

Technologies du Web. Technologies côté serveur. Pierre Senellart. Page 1 / 53 Licence de droits d usage

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Intégration du Web 2.0 dans les solutions IBM

ADF 2009 Sécurisation d applications PHP/MySQL

Technologies pour Web Services faciles : REST, JSON

Content Switch ou routage de niveau HTTP

Stocker des données sur Amazon S3

Transcription:

«Cachez-moi cette page!» Atelier Pratique 1h30 Hugo Hamon (@hhamon) http://hugohamon.com

Qui suis-je?

Au menu de cet atelier 1. Introduction 2. Avantages 3. Expiration (Expires & Cache-Control) 4. Validation (Etag & Last-Modified) 5. Reverse Proxy Cache 6. Edge Side Includes

Introduction au Cache HTTP Mai 1996 RFC1945 (HTTP 1.0) Mars 1999 RFC2616 (HTTP 1.1) http://www.ietf.org/rfc/rfc2616.txt http://tools.ietf.org/wg/httpbis/

Pourquoi cacher? Ne pas générer la même réponse deux fois Diminuer la charge sur le serveur web Diminuer la bande passante Diminuer les temps de chargement Servir plus de monde avec moins de serveurs Améliorer l expérience utilisateur

Objectifs? Etre le plus dynamique et le plus performant en sollicitant l application le moins possible.

Types de caches Browser Browser Browser Cache Browser Cache Proxy Cache Gateway Cache Web Server Client-Side Caching Server-Side Caching

Quels sont les contenus cachables? Seules les réponses à des requêtes GET et HEAD peuvent être cachées car elles ne changent pas l état de la ressource. Les requêtes POST, PUT et DELETE ne sont pas cachables!

Stratégies Expiration

Expiration Détermine la durée pendant laquelle une réponse doit être considérée «fraîche» par le cache. Au delà de cette période, la ressource est considérée comme «périmée». Avantages : soulager la charge du serveur web

Expiration Expires

Expires $expires = new \DateTime('2011-10-15 11:00:00'); $expires->settimezone(new \DateTimeZone('UTC')); $date = $expires->format('d, d M Y H:i:s'); PHP header(sprintf('expires: %s GMT', $date)); HTTP/1.1 200 OK Date: Thu, 18 Aug 2011 18:19:10 GMT Expires: Sat, 15 Oct 2011 09:00:00 GMT Content-Type: text/html <html>... </html> HTTP

Expiration Cache-Control

Cache-Control header('http/1.1 200 OK'); header('cache-control: private, maxage=60'); PHP HTTP/1.1 200 OK Date: Thu, 18 Aug 2011 18:29:30 GMT Cache-Control: private, maxage=60 Content-Type: text/html <html>... </html> HTTP

Stratégies Validation

Validation Détermine si une ressource a changé depuis la dernière demande du client en marquant cette dernière à l aide d un identifiant ou d un tampon. Avantages : diminuer le trafic sur le réseau

Validation 304 est votre ami!

Validation Etag If-None-Match

Entity Tag // Generate the resource etag $etag = 'abcdef'; PHP header('http/1.1 200 OK'); header('etag: '. $etag); HTTP/1.1 200 OK Date: Thu, 18 Aug 2011 19:33:12 GMT Etag: abcdef Content-Type: text/html <html>... </html> HTTP

If-None-Match // Generate the resource etag $etag = 'abcdef'; PHP if (isset($_server['http_if_none_match']) && $etag === $_SERVER['HTTP_IF_NONE_MATCH']) { } header('http/1.1 304 Not Modified'); exit;

If-None-Match GET /etag.php HTTP/1.1 Host: www.paris-web.local If-None-Match: abcdef HTTP HTTP/1.1 304 Not Modified HTTP

Validation Last-Modified If-Modified-Since

Last-Modified // Determine the last modified date $date = 'Sat, 12 Aug 2011 10:00:00 GMT'; PHP header('http/1.1 200 OK'); header('last-modified: '. $date); HTTP/1.1 200 OK Date: Thu, 18 Aug 2011 20:07:55 GMT Last-Modified: Sat, 12 Aug 2011 10:00:00 GMT Content-Type: text/html <html>... </html> HTTP

If-Modified-Since // Determine the last modified date $date = 'Sat, 12 Aug 2011 10:00:00 GMT'; PHP if (isset($_server['http_if_modified_since']) && $date === $_SERVER['HTTP_IF_MODIFIED_SINCE']) { } header('http/1.1 304 Not Modified'); exit;

If-Modified-Since GET /last-modified.php HTTP/1.1 Host: www.paris-web.local If-Modified-Since: Sat, 12 Aug 2011 10:00:00 GMT HTTP HTTP/1.1 304 Not Modified HTTP

Validation & Expiration Combiner les deux stratégies reste possible en sachant que l expiration l emporte d abord sur la validation.

Cache côté serveur Reverse Proxy Cache Surrogate Cache Gateway Caches

Reverse Proxy Cache Un reverse proxy cache siège devant le serveur web, intercepte les requêtes entrantes et retourne les réponses fraîches de son cache.

Quelques caches intermédiaires connus Squid Varnish Mod_Cache (Apache)

Varnish-Cache.org

Configuration de Varnish # Make Varnish listen to port 80 backend default {.host = "127.0.0.1";.port = "80"; } # Add ESI support header to all incoming requests sub vcl_recv { set req.http.surrogate-capability = "abc=esi/1.0"; } # Remove Surrogate-Control header from response headers # And parse the response for ESI sub vcl_fetch { if (beresp.http.surrogate-control ~ "ESI/1.0") { unset beresp.http.surrogate-control; set beresp.do_esi = true; } }

Cacher des réponses dans Varnish Cache-Control Public Shared MaxAge

Cacher des réponses dans Varnish header('http/1.1 200 OK'); header('cache-control: public, s-maxage=60'); PHP HTTP/1.1 200 OK Date: Thu, 18 Aug 2011 20:54:08 GMT Cache-Control: public, s-maxage=60 Content-Type: text/html <html>... </html> HTTP

Cacher tout en restant dynamique Edge Side Includes http://www.w3.org/tr/esi-lang

Edge Side Includes <esi:include src="/banner.html"/>

Edge Side Includes Non caché

Edge Side Includes 3600 seconds <esi:include />

Edge Side Includes http://paris-web.local/index.php 1 2 http://paris-web.local/index.php Client Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eu odio eget eros vehicula pulvinar id sed turpis. Vivamus a velit quam, auctor euismod tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit 4 Reverse Proxy Cache 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eu odio eget eros vehicula pulvinar id sed turpis. Vivamus a velit quam, auctor euismod tortor. <esi:include > http://paris-web.local/sidebar.html Lorem ipsum dolor sit amet, consectetur adipiscing elit Serveur Web

«Happy Caching!» Questions? Hugo Hamon (@hhamon) http://hugohamon.com