Download - Optimiser wordpress

Transcript
Page 1: Optimiser wordpress

Optimiser

WordPress Day Algérie – Tlemcen – 1er Décembre 2011

Page 2: Optimiser wordpress

Jeff

Un mot sur l'auteur :

Jean-François VIAL (Jeff)Montpellier, France

Indépendant @ Modulaweb

Spécialiste WordPress, Zimbra et logiciels libres

Développeur PHP, Python, JS essentiellement

Contact sur http://about.me/Jeff_

QRCode

Page 3: Optimiser wordpress

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 :)

Page 4: Optimiser wordpress

Comment ça marche ?Avec une plateforme LAMP (Linux, Apache2, PHP5) ; Étapes clés 1/2 :

1. Démarrage d'Apache1.Lecture des fichiers de conf2.Lecture des fichiers Vhost

2. Requête sur une page d'un WordPress1.Recherche du fichier .htaccess et prise en compte2.Génération de la page

1.Lecture et compilation par PHP => Création d'un opcode2.Exécution de l'opcode par Apache

3.Calcul de l'Etag4.Envoi de la page au client + cookies

Page 5: Optimiser wordpress

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 compte2. Stockage des cookies3. Lecture du fichier sur le disque4. Récupération de la date de modification du fichier sur le disque5. Calcul de l'Etag6. Envoi du fichier + cookies au client

Page 6: Optimiser wordpress

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

Page 7: Optimiser wordpress

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…)

Page 8: Optimiser wordpress

Limiter les accès au disque

Copier le contenu du .htaccess dans le Vhost

Supprimer l'utilisation du .htaccess via la directive AllowOverride Nonedans 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 ETagFileETag None

(cf http://www.askapache.com/htaccess/apache-speed-etags.html)

Page 9: Optimiser wordpress

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/

Page 10: Optimiser wordpress

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

Page 11: Optimiser wordpress

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"

Page 12: Optimiser wordpress

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 !

Page 13: Optimiser wordpress

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

Page 14: Optimiser wordpress

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 !

Page 15: Optimiser wordpress

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

Page 16: Optimiser wordpress

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

Page 17: Optimiser wordpress

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

Page 18: Optimiser wordpress

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 !

Page 19: Optimiser wordpress

Hébergement mutualisé

Pas d'optimisation coté serveur

Optimisation coté WP uniquement (via les plugins)

Optimisation des contenus et thème

Page 20: Optimiser wordpress

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

Page 21: Optimiser wordpress

Autres configs

Lighttpd + XCode

Nginx

Varnish en frontal

Couple Apache + mod_php + lighttpd pour le statique

Page 22: Optimiser wordpress

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

Page 23: Optimiser wordpress

Des questions ?

C'est à vous de parler !

Pas pu poser votre question ? On peut continuer sur ne web ! http://about.me/Jeff_

MERCI !!!


Top Related