Optimisation WordPress: Suppression des révisions de la base de données

Mon blog est « propulsé » par WordPress. J’en suis globalement assez content, surtout pour la myriade de plugins qu’il est possible d’y greffer. Je vous conseille par ailleurs cet article de Chirag Swadia qui résume les principales fonctionnalités de ce CMS et ses possibilités au niveau développement.

Sans doute que le moins bon point de WordPress réside dans ses performances. Les pages semblent parfois longues à se charger. On penche alors vers des plugins de mise en cache. Quoiqu’en réalité une solution plus pertinente serait d’utiliser des solutions de cache server comme Varnish.

Second point faible de WordPress: la base de données. Lorsqu’on y jette un oeil, une table se dégage par sa taille particulièrement importante: wp_post. Ce sera le sujet de cet article. Voyons comment il est possible de l’optimiser.

Qu’est-ce qu’une révision?

La table wp_post contient l’ensemble du contenu du site. Par contenu, on pense directement aux articles. Et c’est vrai qu’elle renferme notamment le corps même des articles, lesquels peuvent être lourds.

Mais cela va plus loin: dans WordPress, tout est post. Aussi, la table inclut également bien d’autres choses, comme les références des médias que l’on charge, par exemple.

C’est pourquoi on y trouve aussi les révisions des articles. Une révision est simplement une version d’un article, une sauvegarde à une date donnée. Un seul article peut ainsi comporter un nombre impressionnant de versions, et celles-ci s’accumulent dans la base de données.

Comment restaurer une révision?

Ces révisions peuvent néanmoins être utiles pour restaurer une version antérieure d’un article. Vous pouvez les afficher depuis la page d’édition de votre article, via, en haut à droite, les Options de l’écran. Il suffit ensuite de cliquer sur la révision de votre choix pour arriver sur un écran de restauration.

Visualiser les révisions

Comment désactiver les révisions?

Il est possible d’empêcher la sauvegarde de ces révisions pour éviter de surcharger la table. Pour ce faire, vous devez ajouter une constante à false dans le fichier de configuration qui se trouve à la racine du dossier de WordPress.

1
2
3
//wp-config.php

define('WP_POST_REVISIONS', false); //aucune révision sauvegardée

Vous pouvez également limiter le nombre de révisions en précisant cette fois un entier dans la constante.

1
2
3
//wp-config.php

define('WP_POST_REVISIONS', 5); //ne garde que 5 révisions

Comment supprimer les révisions?

Pour nettoyer la base de données des révisions déjà présentes, plusieurs sites proposent cette query SQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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'

Je l’ai exécutée sans ennui, mais n’hésitez pas à procéder à un backup de votre base de données au préalable (comme on dit, je me dégage de toute responsabilité…).

4 réflexions au sujet de « Optimisation WordPress: Suppression des révisions de la base de données »

  1. hello, j’ai bien ajouté la constante dans le fichier de config mais hélas cela ne fonctionne pas. sur tout nouvel article modifié puis enregistré j’ai toujours plusieurs versions/révisions. cela serait il du à la version wp ? j’ai la dernière en prod

    • Bonjour, j’ai essayé la constante et effectivement chez moi non plus les révisions ne sont plus supprimées. En revanche, lors de l’enregistrement d’un article aucune nouvelle révision n’est créée. J’ai donc dû également procéder à l’épuration manuelle avec la requête présente ici.

  2. Ping : Test: Suppression des révisions de la base de données – Info-Gate

  3. Ping : WP Suppression des révisions de la base de données – Info-Gate

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>