Contexte

Si vous faites du développement de site sous WordPress, vous aurez certainement besoin de migrer votre base de données d'un environnement à un autre (dev -> recette -> prod, nouveau domaine etc.). Attention, certaines URL sont enregistrées "en dur" dans la base de données, ainsi l'ancien nom de domaine apparaitra dans les liens. Il est donc nécessaire de remplacer les anciennes URL par les nouvelles. Plusieurs solutions sont envisageables, nous allons les détailler ci-dessous.

Lire la suite de

Peut-on utiliser WordPress pour mettre en place un site avec des fonctionnalités avancées et un fort traffic ? Soyons honnête, WordPress est un CMS très répandu et a fait ses preuves dans le domaine des blogs, mais qui n'a jamais douté de ses capacités en termes de performance et de scalabilité ?

En tant que développeur, puis expert technique et maintenant directeur technique, j'ai eu l'occasion à plusieurs reprises d'entendre des discours du type "tu plaisantes ? on ne va pas utiliser WordPress, ça ne tiendra jamais la charge !" ou bien encore "Wordpress c'est bien pour faire un blog c'est tout", "Wordpress c'est sale !", blablabla…

Il y a les fervents défenseurs de WordPress, ceux qui ne jurent que par ce CMS et qui se spécialisent, il y a ceux qui ne veulent pas en entendre parler, et puis ceux qui, comme moi, lui donne une chance (croyez moi, WordPress n'en a pas besoin, il a déjà largement fait ses preuves comme nous le verrons plus tard). Bref, dans ce post je vais vous expliquer pourquoi WordPress fait parti des solutions à envisager pour mettre en place un gros projet au même titre que Joomla, Drupal ou encore Typo3 (et oui ça existe encore).

Part de marché

W3Techs

Worpress est utilisé par plus de 23% des sites web, il représente 61% de la part de marché des CMS. Ces chiffres sont très évocateurs et indiquent l'importance de ce CMS.

Une petite recherche dans Google Trends (de janvier 2013 à décembre 2014, basée sur les recherches de mots clés) permet de sortir les graphiques suivants :

Google Trends France Google Trends monde
France Monde

Ces graphiques illustrent très bien l'intérêt porté à WordPress (courbe bleue). Les chiffres parlent d'eux mêmes : WordPress est le CMS le plus répandu au monde.

Perfomance

Gestion du cache

Wordpress dispose de deux systèmes de cache.

Tout d'abord : le cache persistant grâce à l'API Transient qui permet de mettre des données en cache au niveau de la base de données ou au niveau de memcached par exemple. Le fonctionnement est le suivant: la fonction set_transient(…) permet de mémoriser les données sous forme de tableau ou d'objet, la fonction get_transient(…) permet de récupérer la valeur si elle est présente et non expirée. La méthode delete_transient permet, vous l'aurez deviné, de supprimer une valeur du cache. get_site_transient(), set_site_transient() et delete_site_transient() permettent de gérer le cache dans le cas du multisite. Vous trouverez une très bonne présentation de l'API ici : http://scotch.io/tutorials/a-guide-to-transients-in-wordpress.

Ensuite : le cache non persistant. Ce type de cahe est valable généralement au niveau du cycle de vie de la page et est très utilisé pour les requêtes par exemple. La méthode wp_cache_get(…) permet de vérifier la présence d'un élément dans le cache, la méthode wp_cache_set(…) ajoute un élément dans le cache, la méthode wp_cache_add(…), quant à elle ajoute un élément dans le cache uniquement s'il n'y est pas déjà (contrairement à wp_cache_set qui l'ajoute systématiquement).

Vous trouverez une présentation des caches très intéressante ici : http://www.smashingmagazine.com/2012/06/26/diy-caching-methods-wordpress/.

Plugins

Il exisiste plusieurs module de gestion de cache, voici les principaux:

Ces plugins sont administrables en backoffice et modifient généralement les fichiers Nginx, Apache, Htaccess afin d'optimiser les configurations serveurs.

Configuration serveur

La performance ne dépend pas uniquement du CMS ou du Framework, il est possible d'intervenir à différents niveaux :

  • load balancing pour la répartition de la charge
  • cache des ressources statiques (Varnish, Nginx, Apache mod_cache etc…)
  • mise en cache dans la RAM (Redis, Memcached)
  • optimisation des ressources : RAM, SSD, CPU, Bande passante

Bonnes pratiques

Installer WordPress ou un autre CMS ne garantit pas un temps de réponse idéal, un poids de page minimum, un nombre de requêtes optimum… C'est la qualité du code qui permet de tendre vers une performance optimale. Voici quelques pistes d'amélioration simple à mettre en place :

  • minification / concaténation des fichiers javascript
  • minification / concaténation des fichiers CSS
  • optimisation des images
  • optimisation des requêtes SQL
  • utilisation de sprites CSS

Vous trouverez quelques unes de ces bonne pratiques dans ce support http://supports.severin-bruhat.com/web-performance

Modularité / évolutibilité

Il existe une multitude de plugins pour wordpress (plus de 35000) disponibles ici : https://wordpress.org/plugins/. Quelle que soit la fonctionnalité recherchée, il y a de fortes chances pour qu'un plugin existe déjà et que vous n'ayez pas besoin de la développer. Attention cependant, comme pour les autres CMS, qui dit "plugin" dit "code non maitrisé" et potentiellement faille de sécurité. En effet, des failles sont découvertes très régulièrement dans des plugins. Ce compte twitter alerte rapidement dès qu'une faille est trouvée : https://twitter.com/SecuPress. Pensez donc bien à mettre à jour régulièrement vos plugins et votre installation WordPress.

Si vous le souhaitez, vous pouvez développer vous mêmes vos plugins et "maitriser" d'avantage le code source. Pour ce faire, je vous laisse jeter un oeil à la documentation officielle. Dès lors que maitrisez le code, vous pouvez tout faire, WordPress n'a pas plus de limite qu'un autre CMS. J'ai l'habitude de dire que de toute façon avec du temps et de l'argent, quel que soit le CMS, on peut toujours faire ce que le client veut. Alors, si vous êtes à l'aise, codez (RTFM) !

Quelques exemples

Jusque ici, le blabla que vous avez pu lire ne vous a pas convaincu ? OK, alors maintenant place aux exemples :

Vous trouverez d'autres exemples de sites tournant sous WordPress ici : http://www.wpbeginner.com/showcase/40-most-notable-big-name-brands-that-are-using-wordpress/.

Conclusion

Alors, pensez-vous toujours que WordPress convient uniquement aux petits blogs tels que le mien ? Sans trop m'avancer, je pense que les sites de Coca, des Rolling Stones et de Bata reçoivent beaucoup plus de visiteurs et servent beaucoup plus de contenus que mon modeste blog 😉

N'hésitez pas à laisser un commentaire pour compléter ou contredire mon article.

Lors de la mise en place d'un site WordPress, il m'est arrivé plusieurs fois de devoir afficher un widget sur une page particulière (accueil, contact…). Je suis tombé sur un excellent plugin : Widget Logic. Ce dernier ajoute un champ à tous les widgets permettant de spécifier sur quelle page afficher le widget :

widget logicL'exaustivité des conditions utilisables dans le champ Widget Logic se trouve sur codex.

Quelques exemples :

  • is_page( $id )
  • is_single( $id )
  • is_single( $id )
  • is_category( $id )

L'essayer , c'est l'adopter !