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

Mise en place d'un cache serveur - WP Tech Nantes 2014

Amaury Balmer
November 28, 2014

Mise en place d'un cache serveur - WP Tech Nantes 2014

La performance, c’est le mot clef essentiel pour tout propriétaire de sites internet depuis quelques années. Un site performant est une obligation à la fois pour vos visiteurs, mais également pour le bon référencement naturel de votre site.

Avec WordPress, l’idée de performance est systématiquement associée à plugins de cache, dont les plus connus WP Super Cache, W3 Total Cache domine assez largement le marché !

Mais au fond, est-ce vraiment à l’applicatif PHP (WP + Plugins) de proposer cette fonctionnalité alors qu’il existe des logiciels de plus haut niveau dédiés à ce besoin.

Cette session aura comme objectif de démystifier l’approche cache serveur, de la théorie à la pratique, avec des démos lives, et des chiffres à l’appui !

Amaury Balmer

November 28, 2014
Tweet

More Decks by Amaury Balmer

Other Decks in Programming

Transcript

  1. VOTRE ORATEUR Amaury Balmer  Directeur technique de l’agence web

    WordPress BE API Expertise technique WordPress et industrialisation WP Addict since 2005 ! Twitter @herewithme @be_api Web herewithme.fr beapi.fr
  2. PROMESSE La performance, c’est le mot clef essentiel pour tout

    propriétaire de sites internet depuis quelques années. Un site performant est une obligation à la fois pour vos visiteurs, mais également pour le bon référencement naturel de votre site. Avec WordPress, l’idée de performance est systématiquement associée à plugins de cache, dont les plus connus WP Super Cache, W3 Total Cache domine assez largement le marché ! Mais au fond, est-ce vraiment à l’applicatif PHP (WP + Plugins) de proposer cette fonctionnalité alors qu’il existe des logiciels de plus haut niveau dédiés à ce besoin. Cette session aura comme objectif de démystifier l’approche cache serveur, de la théorie à la pratique, avec des démos lives, et des chiffres à l’appui !
  3. RÉDUIRE SON “TTFB“ EST CRUCIAL ! TTFB = Time To

    First Bytes Conséquences :  3+ secondes = Urgence  1-3 secondes = Acceptable  500ms – 1000ms = Rapide  <100ms – Fluide !
  4. COMMENT FONCTIONNE LE WEB (STATIQUE) ? 1. Un navigateur demande

    à consulter une page web 2. Le serveur HTTP reçoit la demande la requête 3. Le serveur HTTP ouvre le fichier HTML demande 4. Le serveur HTTP renvoi la page au navigateur Simple et rapide !
  5. COMMENT FONCTIONNE UN SITE WP ? 1. Un navigateur demande

    à consulter une page web 2. Le serveur HTTP reçoit la demande la requête 3. Le serveur HTTP transmet la requête à un processus PHP 4. Le processus PHP lance WordPress 5. WordPress exécute ses requêtes auprès de la BDD MySQL 6. WordPress génère le code HTML 7. Le processus PHP renvoi le code HTML au serveur HTTP 8. Le serveur HTTP renvoi la page au navigateur Lourd et complexe !
  6. 1, 2, 3, 4 CACHES ? Le cache DB Le

    cache opcode Le cache objet Le cache statique
  7. VOUS AVEZ DIT PLUGIN ? WP Rocket WP Super Cache

    W3 Total Cache Hyper Cache WP Fastest Cache Quick cache Batcache Memcached Object Cache APC Object Cache Redis Object Cache WP File Cache File-Based Cache DB Cache reloaded
  8. POURQUOI LES PLUGINS ? Compatible avec les hébergements mutualisés Intégré

    à WordPress  Hookable Bon niveau de performances
  9. POURQUOI CHANGER ? Architecture multi serveurs ? Performances / Haute

    disponibilité ! Dépendance au serveur HTTP Apache Approche WordPress Multisites aléatoire Performances ?
  10. WP CACHE ET WP SUPER CACHE Juillet 2007 1ère solution

    hybride entre le cache applicatif et le cache serveur HTACCESS
  11. KESAKO ? Proxy Le principe de fonctionnement basique d'un serveur

    proxy est assez simple : il s'agit d'un serveur "mandaté" par une application pour effectuer une requête sur Internet à sa place. Reverse Proxy On appelle reverse-proxy (en français le terme de relais inverse est parfois employé) un serveur proxy-cache "monté à l'envers", c'est-à-dire un serveur proxy permettant non pas aux utilisateurs d'accéder au réseau internet, mais aux utilisateurs d'internet d'accéder indirectement à certains serveurs internes.
  12. VARNISH CACHE Serveur de cache HTTP Apparu en 2002 Distribué

    sous licence BSD Version stable 3 et 4 Version commerciale : VARNISH Plus
  13. NGINX Serveur HTTP et de cache HTTP Apparu en 2006

    Distribué sous licence BSD Version stable 1.6 et 1.7 Module de cache : fastcgi_cache Version commerciale : NGINX Plus
  14. SITE DE DÉMO WordPress 4.0.1 Un thème premium choisi aléatoirement

    « Jupiter » Des contenus de test Page d’accueil 42 requêtes HTTP 2Mo environ
  15. 9 CONFIGURATIONS Apache Apache + 1 plugin (WP Cache) Apache

    + 1 plugin (WP Super Cache) Apache – FPM Apache – FPM + 1 plugin (WP Super Cache) Nginx – FPM Nginx + 1 plugin (WPSC) Nginx + Fast CGI cache Varnish + Apache - FPM
  16. MÉTHODOLOGIE 1 serveur VPS loué pour l’occasion  64 bits

     2 vCPU  2 Go de RAM  Debian 7.0 Outil de benchmark  Apache HTTP server benchmarking tool : AB Paramètres  ab -n 100 -c 5 http://vps118432.ovh.net/  200 requêtes, 5 concurrentielles
  17. 1,8 20 34,2 1,9 43,5 1,9 48 49,7 53,1 0

    10 20 30 40 50 60 Apache Apache + 1 plugin (WPC) Apache + 1 plugin (WPSC) Apache – FPM Apache – FPM + 1 plugin (WPSC) Nginx – FPM Nginx + FPM - 1 plugin (WPSC) Nginx + FPM - Fast CGI cache Varnish + Apache - FPM Requêtes par secondes Pages par secondes
  18. RÉSULTATS Configuration Requêtes / seconde Apache 1,8 Apache + 1

    plugin (WPC) 20 Apache + 1 plugin (WPSC) 34,2 Apache – FPM 1,9 Apache – FPM + 1 plugin (WPSC) 43,5 Nginx – FPM 1,9 Nginx + FPM - 1 plugin (WPSC) 48 Nginx + FPM - Fast CGI cache 49,7 Varnish + Apache - FPM 53,1
  19. CONTEXTE ET PRÉ-REQUIS 1. Un serveur dédié ou virtualisé sous

    Linux 2. Un accès SSH (root) 3. 10 minutes 4. Une installation WordPress avec Apache
  20. VARNISH EN PRATIQUE 1. Un fichier de configuration VCL 

    Temps d’expiration  Règles de compression  Exclusions 2. Un plugin WordPress  Demande de purge  WP-Varnish ou Varnish HTTP Purge
  21. NOTRE VCL ! https://github.com/BeAPI/wp-varnish Mashup de pleins VCL ! •

    Expiration des pages 2H • Ressources statiques (expiration/compression) • Exclusion cookies / backoffice • Gestion des purges manuelles • Verbeux !
  22. INSTALLATION 1. Installation de Varnish 2. Configuration des ports de

    Varnish et Apache2 3. Mise en place la VCL 4. Reboot des 2 services 5. Test et enjoy !
  23. CONTEXTE ET PRÉ-REQUIS 1. Un serveur dédié ou virtualisé sous

    Linux 2. Un accès SSH (root) 3. 15 minutes 4. Une installation WordPress avec Apache 1. PHP via FPM / HHVM
  24. NGINX EN PRATIQUE 1. Un fichier de configuration  Temps

    d’expiration  Règles de compression  Exclusions 2. Un plugin WordPress  Demande de purge  NGINX helper
  25. INSTALLATION 1. Installation de Nginx 2. Configuration pour WordPress 3.

    Test 4. Activation du cache statique dans Nginx 5. Test et enjoy !
  26. VARNISH Un stack classique ! Varnish + LAMP Apache donc

    support des htaccess Plus flexible sur les règles de purge Support ESI
  27. ESI

  28. NGINX Adapté au environnement avec peu de ressources ! VPS

    avec 256 Mo de RAM ! Support de HTTPS 1 logiciel pour tout faire ! Configuration spécifique au type de WordPress installé ! Monosite / Multisite sous domaines – sous répertoires
  29. EMPILER LES TECHNOS DE CACHE 1. Varnish 2. Nginx 3.

    WP-Super-Cache Possible, mais complexe à purger !