Table des matières de l'article :
WP Rocket est l'une des extensions WordPress les plus populaires pour améliorer les performances des sites web. Selon son site web , elle est actuellement utilisée par plus de 3 millions d'installations WordPress.
Cependant, compte tenu de son immense popularité, de ses multiples formules de licence et du fait que WP Rocket est l'un des plugins WordPress les plus recherchés et les plus piratés de tous les temps, on peut affirmer sans risque que WP Rocket est actuellement utilisé sur au moins 12 millions de sites WordPress dans le monde.
Ce plugin offre de nombreuses fonctionnalités utiles pour optimiser la mise en cache du site et améliorer les temps de chargement des pages. WP Rocket enregistre le cache sous forme de fichiers sur disque et propose de nombreuses options de configuration pour optimiser les performances du site.
Bien que WP Rocket soit une solution de mise en cache très appréciée par rapport à ses concurrents, elle présente un bug important susceptible d'affecter le classement et l'indexation de votre site. Ce bug concerne le champ « last-modified », utilisé par les moteurs de recherche pour déterminer si une page a été modifiée récemment. Si ce champ n'est pas mis à jour correctement, les moteurs de recherche risquent de ne pas indexer correctement votre site, ce qui pourrait entraîner une baisse de votre trafic organique.
Il est donc important de prendre en compte ce bug de WP Rocket si vous envisagez d'utiliser cette extension pour votre activité en ligne. Dans cet article, nous examinerons ce bug en détail et ses conséquences potentielles sur votre site web. Si vous souhaitez optimiser votre activité en ligne et garantir un bon référencement sur les moteurs de recherche, il est conseillé d'éviter d'utiliser WP Rocket jusqu'à la résolution de ce bug.
Un aperçu de l'en-tête HTTP de dernière modification.
L'en-tête HTTP « Last-Modified » est un champ d'en-tête utilisé dans la communication client-serveur pour fournir des informations sur la date et l'heure de la dernière modification d'une ressource web. Ce champ est envoyé par le serveur au client dans le cadre de la réponse HTTP et contient la date et l'heure de la dernière modification de la ressource.
Son objectif principal est d'aider les clients à déterminer si une ressource Web a changé depuis le dernier accès, afin qu'ils puissent éviter de télécharger à nouveau la même ressource si elle n'a pas changé.
Ainsi, le champ « Dernière modification » contribue à réduire le trafic réseau et à améliorer les performances du site web. Lorsqu'un client demande une ressource, il peut inclure un champ d'en-tête « If-Modified-Since » dans sa requête, contenant la date et l'heure de la dernière modification de la ressource enregistrée. Si la ressource n'a pas été modifiée depuis son dernier accès, le serveur répond par un code d'état « 304 Not Modified », évitant ainsi de la récupérer.
Dernière modification et robots d'exploration Google.
L'en-tête HTTP « Last-Modified » indique la date et l'heure de la dernière modification d'une ressource web. Cependant, si ce champ est mal configuré et renvoie systématiquement la date du jour, indépendamment de la date réelle de la dernière modification, cela peut avoir des conséquences indésirables pour les robots d'exploration de Google.
En particulier, si l'en-tête "Last-Modified" renvoie toujours la date et l'heure actuelles, les robots d'exploration de Google pourraient interpréter à tort la ressource comme une nouvelle page, même si elle n'a pas été modifiée. Cela pourrait entraîner une diminution des performances du site Web en termes d'indexation et de positionnement dans les résultats de recherche.
De plus, si le champ « Dernière modification » est mal renseigné, le serveur peut renvoyer une réponse « 200 OK » même si la ressource n'a pas été modifiée depuis son dernier accès. Cela peut entraîner une augmentation du trafic réseau et une baisse des performances du site web, car les robots d'exploration de Google risquent de télécharger à nouveau la même ressource alors qu'elle n'a pas été modifiée.
Budget de dernière modification et de crawl Google Bot incorrect.
Le budget d'exploration de Google représente la quantité de ressources d'un site web que le moteur de recherche est disposé à consacrer à son exploration et à son indexation. Ce budget dépend de nombreux facteurs, notamment la qualité du site, la fréquence des mises à jour de contenu et la vitesse de chargement.
Un en-tête HTTP Last-Modified toujours à jour peut être préjudiciable au budget d'exploration de Google, car il pourrait amener le moteur de recherche à consacrer des ressources inutiles à l'exploration de ressources qui n'ont pas été modifiées. En particulier, si l'en-tête Last-Modified est mis à jour chaque fois que le cache est régénéré, même si le contenu n'a pas changé, Google pourrait interpréter la ressource comme une nouvelle page et dépenser des ressources inutiles pour explorer cette page.
Cela entraînerait une utilisation inefficace du budget d'exploration de Google, qui pourrait être mieux employé à explorer d'autres ressources plus pertinentes et à jour. De plus, une utilisation inefficace de ce budget pourrait ralentir l'indexation des ressources les plus importantes du site web.
Pour éviter ce problème, il est important de s'assurer que l'en-tête HTTP Last-Modified n'est mis à jour que lorsque la ressource a réellement changé. De cette façon, il est possible de garantir une bonne gestion du budget de crawl de Google et d'améliorer l'indexation globale du site.
WP Rocket et le bug de la dernière modification en détail.
Lorsque WP Rocket génère le cache disque pour les articles et les pages WordPress, il remplace la date de dernière modification de l'article par la date de génération ou de régénération du cache. Ainsi, à chaque régénération du cache, WP Rocket met à jour le champ « Dernière modification », même si l'article ou la page n'a pas été modifié depuis des années.
Plus précisément, WP Rocket détermine la date du fichier Cache produit sur le disque et propose cette date comme en-tête HTTP Dernière modification. Le code incriminé est le suivant :
Comme on peut le constater dans le code ci-dessus, WP Rocket renvoie l'en-tête Last-Modified, en formatant la date récupérée du cache disque à l'aide de la fonction PHP filemtime().
La fonction filemtime() de PHP est une fonction native qui renvoie la date de la dernière modification d'un fichier. Cette fonctionnalité est très utile pour vérifier si un fichier a changé depuis une version précédente et pour mettre à jour le cache de fichiers.
Ce bogue peut causer des problèmes aux moteurs de recherche et autres crawlers qui utilisent le champ Last-Modified pour déterminer si une ressource a été modifiée depuis le dernier accès. Si le champ Last-Modified est mis à jour chaque fois que le cache est régénéré, même si la publication ou la page n'a pas été modifiée, les robots d'exploration pourraient alors interpréter à tort la ressource comme une nouvelle page, même si elle n'a pas été réellement modifiée.
Pour éviter le bug lié à l'en-tête Last-Modified, WP Rocket aurait dû mettre à jour cet en-tête HTTP dans les fichiers cache qu'il génère en récupérant directement la date de dernière modification de l'article ou de la page depuis la base de données WordPress. Ainsi, le champ Last-Modified serait mis à jour uniquement lorsque la ressource est réellement modifiée, garantissant un indexage correct par les moteurs de recherche.
Pour mettre en œuvre cette solution, WP Rocket devrait utiliser la fonction WordPress « get_post_modified_time() » afin de récupérer la date de dernière modification de l’article ou de la page. Cette fonction renvoie la date et l’heure de la dernière modification, ce qui permet de mettre à jour correctement le champ Last-Modified dans l’en-tête HTTP.
Nous avons officiellement signalé le bogue à WP Rocket.
L'erreur que nous avons découverte est très grave, d'autant plus qu'il ne s'agit pas d'un oubli des développeurs, mais précisément du manque de principes fondamentaux et de pierres angulaires sur ce qu'est l'en-tête HTTP Last-Modified et à quoi il sert. Par conséquent, développer un plugin destiné à des millions, des dizaines de millions de sites Web sans avoir à l'esprit la logique de base du fonctionnement de la gestion des en-têtes n'est pas un fait sérieux mais très sérieux.
Nous voulions donc signaler le problème directement à WP Rocket, en incluant dans la demande de rapport un exemple hypothétique, dans lequel un article hypothétique publié le 24 décembre pour souhaiter aux lecteurs des vœux de Noël, entraînerait un en-tête Last-Modified ultérieur, et après le Le 24 décembre lui-même, bien que le message n'ait en aucun cas été modifié.
Ils nous ont ignorés pour le moment et au lieu de nous remercier…
Il peut sembler absurde que face à un problème aussi grave signalé au support technique, ils se soient limités à nous informer qu'ils ne peuvent pas répondre à notre demande car notre licence Wp Rocket a expiré.
Ce n'est pas une blague, mais c'est vraiment ce qu'ils nous ont répondu dans le mail que nous rapportons ci-dessous.
On peut se demander s'il est juste qu'une entreprise similaire avec une telle négligence continue à mériter l'entière confiance de ses clients, qui, ignorant la gravité de leur comportement, vont créer de réels dommages sur les sites de leurs clients sans même le savoir ou du moins vouloir savoir.
Pour l'instant nous avons sollicité la demande en utilisant les bons noms et en précisant que ce n'est pas nous qui leur demandons du soutien, mais c'est nous qui le leur offrons gratuitement compte tenu de leur ignorance sur le sujet.
Nous espérons un FIX dès que possible et en attendant nous vous conseillons de surveiller la situation sur les statistiques de crawl de Google et de mesurer les éventuels effets négatifs si vous l'utilisez déjà.





