SlideShare une entreprise Scribd logo
Optimiser




WordPress Day Algérie – Tlemcen – 1er Décembre 2011
Un mot sur l'auteur :


       Jean-François VIAL (Jeff)
       Montpellier, France
Jeff   Indépendant @ Modulaweb


       Spécialiste WordPress, Zimbra et logiciels libres
       Développeur PHP, Python, JS essentiellement
       Contact sur http://about.me/Jeff_




                                                    QRCode
Pourquoi ?
Il y a plein de bonnes raions :

 Confort de visite

 Baisser la charge du serveur

 À cause de notre ami Google !

 Permettre d'encaisser des hausses de traffic

 Parce que c'est bien :)
Comment ça marche ?
Avec une plateforme LAMP (Linux, Apache2, PHP5) ;
Étapes clés 1/2 :
1. Démarrage d'Apache
    1.Lecture des fichiers de conf
    2.Lecture des fichiers Vhost
2. Requête sur une page d'un WordPress
    1.Recherche du fichier .htaccess et prise en compte
    2.Génération de la page
        1.Lecture et compilation par PHP
          => Création d'un opcode
        2.Exécution de l'opcode par Apache
    3.Calcul de l'Etag
    4.Envoi de la page au client + cookies
Comment ça marche ?
Avec une plateforme LAMP (Linux, Apache2, PHP5) ;
Étapes clés 2/2 :
3. Requête sur les dépendances de la page (css,images,js…)
   Pour chaque fichier :
    1. Recherche du fichier .htaccess et prise en compte
    2. Stockage des cookies
    3. Lecture du fichier sur le disque
    4. Récupération de la date de modification du fichier sur
    le disque
    5. Calcul de l'Etag
    6. Envoi du fichier + cookies au client
Ce n'est pas tout !
 Tous les fichiers ne se téléchargent pas en même temps !
  (par défaut 4 à la fois sur un même domaine)
 Attention à la favicon, si non présente, peut faire générer
    plusieurs pages 404 à WP !
 Idem fichier robot.txt et autres fichiers courrants
Sur quoi agir ?
 Sur les accès au disque : il faut les limiter au strict
    nécessaire
 Sur le temps de génération des contenus dynamiques
    (cache d'opcode)
 Sur le nombre de contenus dynamiques générés
    (cache HTML etc)
 Sur le téléchargement des dépendances (cache client)
 Sur le nombre de dépendances (grouper les js et css)
 Sur la taille des document servis (compression gzip)
 Sur la taille des requêtes (pas de cookies pour les
    contenus statiques, js, css, images…)
Limiter les accès au disque
 Copier le contenu du .htaccess dans le Vhost
 Supprimer l'utilisation du .htaccess via la directive
    AllowOverride None
    dans le VHost
 Supprimer la génération de l'Etag :
    • Installer le mod_headers d'Apache
    • Dans /etc/apache2/conf.d/headers, écrire les deux
       directives suivantes :
       Header unset ETag
       FileETag None


     (cf http://www.askapache.com/htaccess/apache-speed-
       etags.html)
Accélérer PHP !
 Installer un système de mise en cache d'opcode (mon
    choix : XCache)
  Sur Debian ou Ubuntu : sudo apt-get install php5-xcache
  puis configurer /etc/php5/conf.d/xcache.ini en fonction de
    votre système (fichier documenté)
  puis redémarrer Apache (/etc/init.d/apache2 restart)
 XCache, seul ne sert à rien, il faudra aussi installer le
   plugin correspondant pour WP en allant ici :
   http://neosmart.net/WP/XCache/
Limiter la génération des pages
   Plugin WP Super Cache !
   Page générée par WP servie en 0.8 s
   Page en cache (fichier statique servi par Apache) <0.1 s
   Si suffisamment de RAM, combiner avec mod_memcache
      et/ou memcached
Contrôler le cache client
 On peut indiquer au client la durée de vie de son cache
 Les fichiers statiques changent peu souvent, inutile de les
    recharger à chaque page lors d'une visite (js, css,
    images…)
 Activation du mod_expires (a2enmod)
 Configuration du module via son fichier de conf ou Vhost
 Selon le type/mime
 Ex : ExpiresByType image/png "access plus 2 month"
 Ex : ExpiresByType text/xml "modification plus 2 days"
Grouper !
 Grouper les js et css = 2 fichiers seulement
 Utilisation de PHPSpeedy
 Désactiver l'option gzip si utilisation de mod_deflate
   (double compression!)
 Faire des tests avant la production


 Penser aussi aux sprites dans vos thèmes !
Documents compressés
 Les navigateurs modernes acceptent les contenus
    compressés gzip/deflate
 Apache possède un mod_deflate !
 Taille des fichiers diminuée de 5 à 70% !
 Déconseillé si peu de CPU/RAM (remède pire que le mal)
 Permet de limiter la bande passante, accélérer le
    téléchargment
 Attention, certain plugins compressent les fichier (comme
    PHPSpeedy) désactiver l'option
Votre propre CDN
 Si le WP est sur mondomaine.com, faire pointer le sous
    domaine cdn.mondomaine.com sur le WP
 Configurer SuperCache pour gérer ce CDN
 Autre domaine = pas de partage de cookies !
 Permet de paralléliser les téléchargements
 Multiplier les CDN si besoin
 Possibilité de répliquer les données sur autre serveur
    HTTP (comme lighttpd) et/ou autre machine !
Et Apache ?
 Apache peut être configuré très précisément
 ! Cas par cas, selon la consommation CPU/RAM
 Peser le pour et le contre, ajuster petit à petit
 Aucune recette miracle
Et MySQL?
 On peut configurer le cache de requêtes
 Peu utile si le reste est fait car moins de requêtes
 Nécessite un audit fin
Et PHP ?
 Il faut désactiver ce qui est inutile / inutilisé
 Ne pas loguer les erreurs en prod
 Désactiver les directives register_* et magic_quote_*
 Éventuellement régler les ressources dispos pour PHP
Et WordPress ?
 En lui même WP fait déjà le max !
 On peut éventuellement désactiver les révisions pour ne
   pas surcharger la base via

    define('WP_POST_REVISIONS', false);

 Attention aux plugins ! Au plus il y en a, au plus c'est lent
 Certains plugins sont très pénalisant : auditer à l'activation/
   avant la prod !
Hébergement mutualisé
 Pas d'optimisation coté serveur
 Optimisation coté WP uniquement (via les plugins)
 Optimisation des contenus et thème
Comment évaluer ?
 Firebug, onglet réseau
 GTMetrics = PageSpeed + YSlow
 Stress du serveur :
   • Apache bench (ab/ab2) débutants
   • Tsung ou Siege (GPL) + complet, + complexe
   • Selenium (Apache Licence) : le plus réaliste
Autres configs
 Lighttpd + XCode
 Nginx
 Varnish en frontal
 Couple Apache + mod_php + lighttpd pour le statique
Conseils
 Testez, testez, testez… mais ne vous prenez pas la tête
 Pas de miracles !

 Découpez les articles longs
 Pensez à Ajax et au lazy-loading
 Un seul framework JS à la fois
 Peu de plugins, mais des plugins utiles / efficaces


 Petit serveur === petites perfs (pas de miracles!!!)
 Gros serveur !== bonnes perfs
 Petit serveur + bonne config == perfs correctes
Des questions ?
 C'est à vous de parler !
 Pas pu poser votre question ? On peut continuer sur ne
    web ! http://about.me/Jeff_




                             MERCI !!!

Contenu connexe

Tendances

Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
Khalid Jebbari
 
Optimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installationOptimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installation
Fabrice Ducarme
 
Un environnement de développement solide avec wamp
Un environnement de développement solide avec wampUn environnement de développement solide avec wamp
Un environnement de développement solide avec wamp
Nicolas Beauvais
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
Abdoulaye Dieng
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
haricot
 
Un navigateur, comment ça marche
Un navigateur, comment ça marche  Un navigateur, comment ça marche
Un navigateur, comment ça marche
Mouhamadou Moustapha CAMARA
 
Breizhcamp 2014 : Une partie de Cache-Cache
Breizhcamp 2014 : Une partie de Cache-CacheBreizhcamp 2014 : Une partie de Cache-Cache
Breizhcamp 2014 : Une partie de Cache-Cache
Frederic Bouchery
 
WordPress Jurassique
WordPress JurassiqueWordPress Jurassique
WordPress Jurassique
Jean-Francois Arseneault
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
13p
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
Florian Beaufumé
 
Talk performance web
Talk performance webTalk performance web
Talk performance web
Emmanuel Quentin
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
Pierre-Alban DEWITTE
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
Content Square
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Steven VAN POECK
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
gaelmetais
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
Toxicode
 
Bien débuter dans la conception d'un thème WordPress
Bien débuter dans la conception d'un thème WordPressBien débuter dans la conception d'un thème WordPress
Bien débuter dans la conception d'un thème WordPress
Aurélien Denis
 
Web performance - appliquer les règles de base
Web performance - appliquer les règles de baseWeb performance - appliquer les règles de base
Web performance - appliquer les règles de baseJonathan Buttigieg
 
Comment améliorer la performance de vos sites et applications web présen...
Comment améliorer la performance de vos sites et applications web    présen...Comment améliorer la performance de vos sites et applications web    présen...
Comment améliorer la performance de vos sites et applications web présen...
Roland Coma
 

Tendances (20)

Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Optimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installationOptimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installation
 
Un environnement de développement solide avec wamp
Un environnement de développement solide avec wampUn environnement de développement solide avec wamp
Un environnement de développement solide avec wamp
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
Un navigateur, comment ça marche
Un navigateur, comment ça marche  Un navigateur, comment ça marche
Un navigateur, comment ça marche
 
Breizhcamp 2014 : Une partie de Cache-Cache
Breizhcamp 2014 : Une partie de Cache-CacheBreizhcamp 2014 : Une partie de Cache-Cache
Breizhcamp 2014 : Une partie de Cache-Cache
 
WordPress Jurassique
WordPress JurassiqueWordPress Jurassique
WordPress Jurassique
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
Talk performance web
Talk performance webTalk performance web
Talk performance web
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?
 
Zenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX AmadeusZenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX Amadeus
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Bien débuter dans la conception d'un thème WordPress
Bien débuter dans la conception d'un thème WordPressBien débuter dans la conception d'un thème WordPress
Bien débuter dans la conception d'un thème WordPress
 
Web performance - appliquer les règles de base
Web performance - appliquer les règles de baseWeb performance - appliquer les règles de base
Web performance - appliquer les règles de base
 
Comment améliorer la performance de vos sites et applications web présen...
Comment améliorer la performance de vos sites et applications web    présen...Comment améliorer la performance de vos sites et applications web    présen...
Comment améliorer la performance de vos sites et applications web présen...
 

En vedette

Multiposting bc by tiana rajaonarivelo
Multiposting bc by tiana rajaonariveloMultiposting bc by tiana rajaonarivelo
Multiposting bc by tiana rajaonarivelotianarajao
 
Comment enseigner les comportements écologiques
Comment enseigner les comportements écologiquesComment enseigner les comportements écologiques
Comment enseigner les comportements écologiquesYves Patte
 
2047
20472047
2047
BRANDON99
 
Décès du bon sens
Décès du bon sensDécès du bon sens
Décès du bon sensFemmedeCoeur
 
Présentation izischool pour les enseignants
Présentation izischool pour les enseignantsPrésentation izischool pour les enseignants
Présentation izischool pour les enseignants
Hasan Ozdil
 
Science et moi
Science et moiScience et moi
Science et moi
Thierry Samray
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
Victor A. Reyes
 
Aspectos preliminares
Aspectos preliminaresAspectos preliminares
Aspectos preliminares
Mersy Alulema
 
Manual bosch combi kgn36 xw31
Manual bosch   combi kgn36 xw31Manual bosch   combi kgn36 xw31
Manual bosch combi kgn36 xw31
Alsako Electrodomésticos
 
Renouvellement junior association majeure
Renouvellement junior association majeureRenouvellement junior association majeure
Renouvellement junior association majeureJA33
 
Rocio y cristina
Rocio y cristinaRocio y cristina
Rocio y cristinaevaleger
 
Science et moi
Science et moiScience et moi
Science et moi
Thierry Samray
 
Manual balay campana 3bc895xm
Manual balay   campana 3bc895xmManual balay   campana 3bc895xm
Manual balay campana 3bc895xm
Alsako Electrodomésticos
 
Todo esta Francia y es hermoso
Todo esta Francia y es hermosoTodo esta Francia y es hermoso
Todo esta Francia y es hermoso
Jose Federico Lay Caballero
 
Manual balay - horno 3 hb503xp
Manual balay  - horno 3 hb503xpManual balay  - horno 3 hb503xp
Manual balay - horno 3 hb503xp
Alsako Electrodomésticos
 
Les abelles
Les abellesLes abelles
Les abelles
lministr
 
Manual bosch combi kgn36 xi32
Manual bosch   combi kgn36 xi32Manual bosch   combi kgn36 xi32
Manual bosch combi kgn36 xi32
Alsako Electrodomésticos
 

En vedette (20)

Multiposting bc by tiana rajaonarivelo
Multiposting bc by tiana rajaonariveloMultiposting bc by tiana rajaonarivelo
Multiposting bc by tiana rajaonarivelo
 
Complexite&confiance 010304
Complexite&confiance 010304Complexite&confiance 010304
Complexite&confiance 010304
 
Comment enseigner les comportements écologiques
Comment enseigner les comportements écologiquesComment enseigner les comportements écologiques
Comment enseigner les comportements écologiques
 
2047
20472047
2047
 
Décès du bon sens
Décès du bon sensDécès du bon sens
Décès du bon sens
 
Présentation izischool pour les enseignants
Présentation izischool pour les enseignantsPrésentation izischool pour les enseignants
Présentation izischool pour les enseignants
 
Science et moi
Science et moiScience et moi
Science et moi
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Aspectos preliminares
Aspectos preliminaresAspectos preliminares
Aspectos preliminares
 
Manual bosch combi kgn36 xw31
Manual bosch   combi kgn36 xw31Manual bosch   combi kgn36 xw31
Manual bosch combi kgn36 xw31
 
Renouvellement junior association majeure
Renouvellement junior association majeureRenouvellement junior association majeure
Renouvellement junior association majeure
 
Rocio y cristina
Rocio y cristinaRocio y cristina
Rocio y cristina
 
Manual siemens frigorífico ki42 fp60
Manual siemens   frigorífico ki42 fp60Manual siemens   frigorífico ki42 fp60
Manual siemens frigorífico ki42 fp60
 
Science et moi
Science et moiScience et moi
Science et moi
 
Manual balay campana 3bc895xm
Manual balay   campana 3bc895xmManual balay   campana 3bc895xm
Manual balay campana 3bc895xm
 
Todo esta Francia y es hermoso
Todo esta Francia y es hermosoTodo esta Francia y es hermoso
Todo esta Francia y es hermoso
 
Manual balay - horno 3 hb503xp
Manual balay  - horno 3 hb503xpManual balay  - horno 3 hb503xp
Manual balay - horno 3 hb503xp
 
Les abelles
Les abellesLes abelles
Les abelles
 
Sdo
SdoSdo
Sdo
 
Manual bosch combi kgn36 xi32
Manual bosch   combi kgn36 xi32Manual bosch   combi kgn36 xi32
Manual bosch combi kgn36 xi32
 

Similaire à Optimiser WordPress

La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
Aymeric Bouillat
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans Wordpress
Nicolas Juen
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
Noël
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
Christophe Villeneuve
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
Eric D.
 
Un Voyage Au Cœur Du Cache
Un Voyage Au Cœur Du CacheUn Voyage Au Cœur Du Cache
Un Voyage Au Cœur Du Cache
Pierre Lannoy
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
pierredargham
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellence
Mehdi Mehni
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
PrestaShop
 
Optimisation de son site web
Optimisation de son site webOptimisation de son site web
Optimisation de son site web
Christophe Avonture
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
Olivier Grisel
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
tcouery
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
GroupeExcelMarrakech
 
Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances Drupal
Skilld
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
Christophe Furmaniak
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
adiouf2
 
Drupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupalDrupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupal
Artusamak
 

Similaire à Optimiser WordPress (20)

La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans Wordpress
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Un Voyage Au Cœur Du Cache
Un Voyage Au Cœur Du CacheUn Voyage Au Cœur Du Cache
Un Voyage Au Cœur Du Cache
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellence
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Optimisation de son site web
Optimisation de son site webOptimisation de son site web
Optimisation de son site web
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
 
Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances Drupal
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Drupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupalDrupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupal
 

Plus de Chi Nacim

Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPressChi Nacim
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPress
Chi Nacim
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMSChi Nacim
 
Themes WordPress
Themes WordPressThemes WordPress
Themes WordPress
Chi Nacim
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPressChi Nacim
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPress
Chi Nacim
 
WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement
Chi Nacim
 
Installation et configuration wordpress
Installation et configuration wordpressInstallation et configuration wordpress
Installation et configuration wordpress
Chi Nacim
 
Creation de-themes-wp
Creation de-themes-wpCreation de-themes-wp
Creation de-themes-wp
Chi Nacim
 

Plus de Chi Nacim (9)

Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPress
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMS
 
Themes WordPress
Themes WordPressThemes WordPress
Themes WordPress
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPress
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPress
 
WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement WordPress : optimisation pour le référencement
WordPress : optimisation pour le référencement
 
Installation et configuration wordpress
Installation et configuration wordpressInstallation et configuration wordpress
Installation et configuration wordpress
 
Creation de-themes-wp
Creation de-themes-wpCreation de-themes-wp
Creation de-themes-wp
 

Optimiser WordPress

  • 1. Optimiser WordPress Day Algérie – Tlemcen – 1er Décembre 2011
  • 2. Un mot sur l'auteur : Jean-François VIAL (Jeff) Montpellier, France Jeff Indépendant @ Modulaweb Spécialiste WordPress, Zimbra et logiciels libres Développeur PHP, Python, JS essentiellement Contact sur http://about.me/Jeff_ QRCode
  • 3. Pourquoi ? Il y a plein de bonnes raions :  Confort de visite  Baisser la charge du serveur  À cause de notre ami Google !  Permettre d'encaisser des hausses de traffic  Parce que c'est bien :)
  • 4. Comment ça marche ? Avec une plateforme LAMP (Linux, Apache2, PHP5) ; Étapes clés 1/2 : 1. Démarrage d'Apache 1.Lecture des fichiers de conf 2.Lecture des fichiers Vhost 2. Requête sur une page d'un WordPress 1.Recherche du fichier .htaccess et prise en compte 2.Génération de la page 1.Lecture et compilation par PHP => Création d'un opcode 2.Exécution de l'opcode par Apache 3.Calcul de l'Etag 4.Envoi de la page au client + cookies
  • 5. Comment ça marche ? Avec une plateforme LAMP (Linux, Apache2, PHP5) ; Étapes clés 2/2 : 3. Requête sur les dépendances de la page (css,images,js…) Pour chaque fichier : 1. Recherche du fichier .htaccess et prise en compte 2. Stockage des cookies 3. Lecture du fichier sur le disque 4. Récupération de la date de modification du fichier sur le disque 5. Calcul de l'Etag 6. Envoi du fichier + cookies au client
  • 6. Ce n'est pas tout !  Tous les fichiers ne se téléchargent pas en même temps ! (par défaut 4 à la fois sur un même domaine)  Attention à la favicon, si non présente, peut faire générer plusieurs pages 404 à WP !  Idem fichier robot.txt et autres fichiers courrants
  • 7. Sur quoi agir ?  Sur les accès au disque : il faut les limiter au strict nécessaire  Sur le temps de génération des contenus dynamiques (cache d'opcode)  Sur le nombre de contenus dynamiques générés (cache HTML etc)  Sur le téléchargement des dépendances (cache client)  Sur le nombre de dépendances (grouper les js et css)  Sur la taille des document servis (compression gzip)  Sur la taille des requêtes (pas de cookies pour les contenus statiques, js, css, images…)
  • 8. Limiter les accès au disque  Copier le contenu du .htaccess dans le Vhost  Supprimer l'utilisation du .htaccess via la directive AllowOverride None dans le VHost  Supprimer la génération de l'Etag : • Installer le mod_headers d'Apache • Dans /etc/apache2/conf.d/headers, écrire les deux directives suivantes : Header unset ETag FileETag None (cf http://www.askapache.com/htaccess/apache-speed- etags.html)
  • 9. Accélérer PHP !  Installer un système de mise en cache d'opcode (mon choix : XCache) Sur Debian ou Ubuntu : sudo apt-get install php5-xcache puis configurer /etc/php5/conf.d/xcache.ini en fonction de votre système (fichier documenté) puis redémarrer Apache (/etc/init.d/apache2 restart)  XCache, seul ne sert à rien, il faudra aussi installer le plugin correspondant pour WP en allant ici : http://neosmart.net/WP/XCache/
  • 10. Limiter la génération des pages  Plugin WP Super Cache !  Page générée par WP servie en 0.8 s  Page en cache (fichier statique servi par Apache) <0.1 s  Si suffisamment de RAM, combiner avec mod_memcache et/ou memcached
  • 11. Contrôler le cache client  On peut indiquer au client la durée de vie de son cache  Les fichiers statiques changent peu souvent, inutile de les recharger à chaque page lors d'une visite (js, css, images…)  Activation du mod_expires (a2enmod)  Configuration du module via son fichier de conf ou Vhost  Selon le type/mime  Ex : ExpiresByType image/png "access plus 2 month"  Ex : ExpiresByType text/xml "modification plus 2 days"
  • 12. Grouper !  Grouper les js et css = 2 fichiers seulement  Utilisation de PHPSpeedy  Désactiver l'option gzip si utilisation de mod_deflate (double compression!)  Faire des tests avant la production  Penser aussi aux sprites dans vos thèmes !
  • 13. Documents compressés  Les navigateurs modernes acceptent les contenus compressés gzip/deflate  Apache possède un mod_deflate !  Taille des fichiers diminuée de 5 à 70% !  Déconseillé si peu de CPU/RAM (remède pire que le mal)  Permet de limiter la bande passante, accélérer le téléchargment  Attention, certain plugins compressent les fichier (comme PHPSpeedy) désactiver l'option
  • 14. Votre propre CDN  Si le WP est sur mondomaine.com, faire pointer le sous domaine cdn.mondomaine.com sur le WP  Configurer SuperCache pour gérer ce CDN  Autre domaine = pas de partage de cookies !  Permet de paralléliser les téléchargements  Multiplier les CDN si besoin  Possibilité de répliquer les données sur autre serveur HTTP (comme lighttpd) et/ou autre machine !
  • 15. Et Apache ?  Apache peut être configuré très précisément  ! Cas par cas, selon la consommation CPU/RAM  Peser le pour et le contre, ajuster petit à petit  Aucune recette miracle
  • 16. Et MySQL?  On peut configurer le cache de requêtes  Peu utile si le reste est fait car moins de requêtes  Nécessite un audit fin
  • 17. Et PHP ?  Il faut désactiver ce qui est inutile / inutilisé  Ne pas loguer les erreurs en prod  Désactiver les directives register_* et magic_quote_*  Éventuellement régler les ressources dispos pour PHP
  • 18. Et WordPress ?  En lui même WP fait déjà le max !  On peut éventuellement désactiver les révisions pour ne pas surcharger la base via define('WP_POST_REVISIONS', false);  Attention aux plugins ! Au plus il y en a, au plus c'est lent  Certains plugins sont très pénalisant : auditer à l'activation/ avant la prod !
  • 19. Hébergement mutualisé  Pas d'optimisation coté serveur  Optimisation coté WP uniquement (via les plugins)  Optimisation des contenus et thème
  • 20. Comment évaluer ?  Firebug, onglet réseau  GTMetrics = PageSpeed + YSlow  Stress du serveur : • Apache bench (ab/ab2) débutants • Tsung ou Siege (GPL) + complet, + complexe • Selenium (Apache Licence) : le plus réaliste
  • 21. Autres configs  Lighttpd + XCode  Nginx  Varnish en frontal  Couple Apache + mod_php + lighttpd pour le statique
  • 22. Conseils  Testez, testez, testez… mais ne vous prenez pas la tête  Pas de miracles !  Découpez les articles longs  Pensez à Ajax et au lazy-loading  Un seul framework JS à la fois  Peu de plugins, mais des plugins utiles / efficaces  Petit serveur === petites perfs (pas de miracles!!!)  Gros serveur !== bonnes perfs  Petit serveur + bonne config == perfs correctes
  • 23. Des questions ?  C'est à vous de parler !  Pas pu poser votre question ? On peut continuer sur ne web ! http://about.me/Jeff_ MERCI !!!