Optimisez les cron WordPress

2 juillet 2023, par Didier Sampaolo

Cron est un programme utilisé dans les systèmes d’exploitation Unix et Linux pour planifier des tâches à exécuter à des moments précis. Il permet d’exécuter des scripts ou des commandes à intervalles réguliers, qu’ils soient récurrents ou ponctuels.

Concrètement, cron utilise un fichier de configuration appelé « crontab » pour définir les tâches à exécuter et leur fréquence d’exécution. Les tâches peuvent être planifiées selon une minuterie précise, telles que tous les jours à une heure spécifique ou tous les lundis à 8h du matin, ou selon une fréquence relative, telle que toutes les 30 minutes ou toutes les heures.

Cron est particulièrement utile pour automatiser des tâches récurrentes telles que des sauvegardes de données, des mises à jour de logiciels, des envois d’e-mails, des publications de contenu sur un site web, etc.

La façon WordPress: WP-Cron

Principe global

WordPress utilise sa propre implémentation de cron, appelée WP-Cron, pour planifier et exécuter des tâches telles que les publications planifiées, les sauvegardes de base de données, les mises à jour de plugins et de thèmes, et plus encore.

Contrairement à la version standard de cron, WP-Cron ne repose pas sur un processus en arrière-plan pour exécuter des tâches planifiées. Au lieu de cela, WP-Cron est déclenché chaque fois qu’une page est chargée sur le site WordPress.

Cela signifie que WP-Cron vérifie régulièrement si des tâches planifiées sont en attente d’exécution. Si une tâche est prévue pour s’exécuter à ce moment-là, WP-Cron l’exécute immédiatement.

Avantage

Cette méthode a l’avantage de ne pas nécessiter de configuration système spécifique. Cela signifie que les utilisateurs WordPress peuvent facilement planifier des tâches sans avoir besoin de connaissances techniques avancées. C’est aussi particulièrement utile si vous n’avez pas les droits nécessaires pour éditer la crontab de votre hébergement web. Et en plus, c’est activé par défaut : que demande le peuple ?

Inconvénients

Cependant, l’inconvénient de cette méthode est qu’elle peut ralentir considérablement les temps de chargement des pages pour les sites à fort trafic, puisque chaque affichage de page nécessitera des requêtes SQL supplémentaires pour vérifier si des tâches sont en attente d’exécution.

Cron peut également affecter les sites à petit trafic de manière inattendue. Comme mentionné précédemment, WP-Cron est déclenché chaque fois qu’une page est chargée sur le site WordPress. Cela signifie que si votre site ne reçoit pas beaucoup de trafic, WP-Cron ne sera pas déclenché souvent, ce qui peut entraîner des retards dans l’exécution des tâches planifiées.

En conséquence, si votre site contient des publications planifiées ou des sauvegardes de base de données planifiées, elles pourraient être retardées si WP-Cron ne s’exécute pas régulièrement.

Les robots d’exploration (comme Googlebot) peuvent également être affectés. Ça sera le cas chaque fois qu’un robot voudra explorer une page, et que WordPress sera ralenti par l’exécution des tâches planifiées… Si les pages de votre site prennent trop de temps à se charger en raison de l’exécution de WP-Cron, cela peut entraîner une exploration moins fréquente de votre site, pénalisant vos efforts de référencement.

Ce graph a été réalisé en appelant la homepage d’un site à faible trafic toutes les 10 minutes et en notant le TTFB (Time To First Byte). On repère immédiatement les périodes où une tâche cron a été déclenchée par le chargement de la page : les temps de chargements sont quasiment multipliés par cinq !

Mettre en place un cron serveur standard

Pour optimiser cette fonctionnalité, il est recommandé de mettre en place un cron standard qui exécutera les tâches planifiées de votre site et de désactiver WP-CRON pour éviter une surcharge de travail inutile.

Pour mettre en place un cron standard, vous avez besoin d’accéder à votre serveur et de créer une tâche cron qui exécutera les tâches planifiées de votre site. Voici les étapes générales pour créer un cron standard :

Connectez-vous à votre serveur en tant qu’utilisateur root ou un utilisateur avec les privilèges sudo.

Ouvrez le fichier crontab en exécutant la commande suivante :

sudo crontab -e

Ajoutez une ligne pour votre tâche cron. Par exemple, si vous souhaitez exécuter votre tâche toutes les heures, vous pouvez ajouter la ligne suivante :

0 * * * * /usr/bin/php /var/www/html/wp-cron.php >/dev/null 2>&1

Cette ligne exécute la tâche toutes les heures en utilisant PHP et pointe vers le fichier wp-cron.php de votre site WordPress.

Enregistrez le fichier crontab et quittez.

Une fois que vous avez créé la tâche cron, vous devez désactiver WP-CRON pour éviter les surcharges de travail inutiles. Pour cela, vous pouvez ajouter la ligne suivante à votre fichier wp-config.php :

define('DISABLE_WP_CRON', true);

Cela désactivera WP-CRON et permettra à votre tâche cron standard de gérer les tâches planifiées de votre site.

En suivant ces étapes, vous pourrez mettre en place un cron standard pour votre site WordPress et améliorer les performances de votre site en évitant les surcharges de travail inutiles.

Dernier conseil

Comme le conseille Julien Deneuville, consultant SEO technique expert, évitez de régler toutes vos tâches cron pour qu’elles se déclenchent en même temps !