Introduction
Optimiser wordpressen nettoyant sa base de donnée
Votre site vous parait de plus en plus lent, et vous aimeriez qu’il retrouve de sa superbe, sa vigueur qu’il possédait lors de son installation ? Vous devriez envisagez de nettoyer votre base de donnée !
Setup
C'est quoi une révision ?
Dans cet article, nous allons nous intéresser à l’une des fonctionnalités de Wordpress qui est, certes, très utiles car elle permet très simplement de charger une ancienne version du contenu d’un article ou d’une page, mais qui peut vite devenir assez énergivore et ralentir votre site internet.
Je parle bien sûr du système de révisions.
Disponible depuis la version 2.6 de Wordpress, ce système enregistre une copie de votre travail, et vous permet de le charger en cas de problème. Très pratique lorsqu’on efface par erreur une partie de son contenu, ou que l’on change d’avis sur une modification de texte ou de design. Mais alors pourquoi supprimer les révisions de Wordpress ?
Ce système peut très rapidement encombrer et alourdir votre base de donnée du aux trop nombreux enregistrements stockés.
Si vous avez un site avec plusieurs dizaines on centaines d’articles et pages et chacun de ces contenus dispose ne serait-ce que d’une trentaine de révisions, je vous laisse imaginer le poids important des informations stockés, qui sera d’autant plus lourd si vous utilisez un thème builder (comme visual composer ou elementor…) et que la structure même de vos pages se retrouve enregistrée en base de donnée.
Code
Le code SQL pour supprimer les révisionsde votre base de donnée.
N’utilisez pas ce code tant que vous n’êtes pas certains de ne plus avoir besoin des révisions enregistrés par wordpress.
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';
/!\ IMPORTANT /!\
Il est impératif de faire une sauvegarde de sa base de donnée avant toute intervention dessus. Une mauvaise utilisation du code peut entraîner des dommages sur votre site Internet, et Websual ne saurait être tenu responsable de tels dommages. Ce code devrait uniquement être utilisé par des utilisateurs avertis. Si vous avez besoin d’optimiser votre site Internet et que vous n’êtes pas qualifiés pour intervenir, faites appels à nos services professionnels.
Exemple
Démonstration du code SQL sur le site Internet Websual
Suite à une récente mise à jour du site, Websual s’est retrouvé avec un nombre important de révisions sur de nombreuses pages. Cela nous donne l’occasion de vous démontrer l’efficacité de la suppression des révisions.
Avant nettoyage des révisions :
Après nettoyage des révisions :
On observe une réduction significative du poids des tables posts et postmeta. Une base de donnée plus légère permet des requêtes (ou query) et un affichage de votre site plus rapide !
Le site Internet de Websual ne dispose pas d’énormément de pages et d’articles, je vous laisse imaginer l’impacte de la suppression des révisions sur un site avec beaucoup de contenu.
Bonus
Comment contrôler les révisions de wordpress ? Allons plus loin !
Il existe plusieurs façons de gérer et contrôler les révisions, avant que celles-ci ne prennent trop de place dans votre base de donnée. A noter cependant que limiter l’action des révisions peut également nuire à une future récupération de donnée perdus.
Limiter le nombre de révisions enregistrées par Wordpress
Vous pouvez limiter le nombre de révisions que Wordpress vient stocker dans votre base de donnée, en ajoutant cette ligne directement dans le fichier wp-config.php situé à la racine de votre installation Wordpress.
(Modifiez le nombre 4 par le nombre de révisions que vous souhaitez conserver.)
define('WP_POST_REVISIONS', 4);
Désactivez complètement les révisions de Wordpress
Même si je le déconseille vivement, vous pouvez à tout moment désactiver complètement les révisions enregistrées par Wordpress en ajoutant cette ligne directement dans le fichier wp-config.php situé à la racine de votre installation Wordpress.
define('WP_POST_REVISIONS', false);