28 avril 2023

Pourquoi vous ne devriez pas utiliser WP Rocket en raison du dernier bogue modifié

Nous avons découvert un bug sérieux affectant WP Rocket qui pourrait sérieusement affecter le référencement de votre site.

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.

Nombre d'installations de WP Rocket

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.

En-tête de la dernière modification

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.

Crawl_budget_Google

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 :

Dernière-Modification-Bug-Wp-Rocket-Code

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é.

Wp-Rocket-Last-Modified-BugIls 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.

Response-Mail-WP-Rocket-to-bug-Last-Modified

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à.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

AVIS DE NON-RESPONSABILITÉ, Mentions légales et droits d'auteur. Red Hat, Inc. détient les droits sur Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale de la AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la Fondation FreeBSD ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt ; Oracle Corporation détient les droits sur Oracle®, MySQL®, MyRocks®, VirtualBox® et ZFS® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; PostgreSQL® est une marque déposée de PostgreSQL Global Development Group ; SQLite® est une marque déposée de Hipp, Wyrick & Company, Inc. ; KeyDB® est une marque déposée d'EQ Alpha Technology Ltd. ; Typesense® est une marque déposée de Typesense Inc. ; REDIS® est une marque déposée de Redis Labs Ltd ; F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB ; HAProxy® est une marque déposée de HAProxy Technologies LLC ; Traefik® est une marque déposée de Traefik Labs ; Envoy® est une marque déposée de CNCF ; Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited ; Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal® ; Shopify® est une marque déposée de Shopify Inc. ; BigCommerce® est une marque déposée de BigCommerce Pty. Ltd.; TYPO3® est une marque déposée de la TYPO3 Association; Ghost® est une marque déposée de la Ghost Foundation; Amazon Web Services, Inc. détient les droits sur AWS® et Amazon SES® ; Google LLC détient les droits sur Google Cloud™, Chrome™ et Google Kubernetes Engine™ ; Alibaba Cloud® est une marque déposée d'Alibaba Group Holding Limited ; DigitalOcean® est une marque déposée de DigitalOcean, LLC ; Linode® est une marque déposée de Linode, LLC ; Vultr® est une marque déposée de The Constant Company, LLC ; Akamai® est une marque déposée d'Akamai Technologies, Inc. ; Fastly® est une marque déposée de Fastly, Inc. ; Let's Encrypt® est une marque déposée d'Internet Security Research Group ; Microsoft Corporation détient les droits sur Microsoft®, Azure®, Windows®, Office® et Internet Explorer® ; Mozilla Foundation détient les droits sur Firefox® ; Apache® est une marque déposée de The Apache Software Foundation ; Apache Tomcat® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée de PHP Group ; Docker® est une marque déposée de Docker, Inc. Kubernetes® est une marque déposée de The Linux Foundation ; OpenShift® est une marque déposée de Red Hat, Inc. ; Podman® est une marque déposée de Red Hat, Inc. ; Proxmox® est une marque déposée de Proxmox Server Solutions GmbH ; VMware® est une marque déposée de Broadcom Inc. ; CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV ; Grafana® est une marque déposée de Grafana Labs ; Prometheus® est une marque déposée de The Linux Foundation ; Zabbix® est une marque déposée de Zabbix LLC ; Datadog® est une marque déposée de Datadog, Inc. ; Ceph® est une marque déposée de Red Hat, Inc. ; MinIO® est une marque déposée de MinIO, Inc. ; Mailgun® est une marque déposée de Mailgun Technologies, Inc. ; SendGrid® est une marque déposée de Twilio Inc. Postmark® est une marque déposée d'ActiveCampaign, LLC ; cPanel®, LLC détient les droits sur cPanel® ; Plesk® est une marque déposée de Plesk International GmbH ; Hetzner® est une marque déposée de Hetzner Online GmbH ; OVHcloud® est une marque déposée d'OVH Groupe SAS ; Terraform® est une marque déposée de HashiCorp, Inc. ; Ansible® est une marque déposée de Red Hat, Inc. ; cURL® est une marque déposée de Daniel Stenberg ; Facebook®, Inc. détient les droits sur Facebook®, Messenger® et Instagram®. Ce site n'est pas affilié, sponsorisé ou autrement associé à l'une des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées sont la propriété de leurs titulaires respectifs. MANAGED SERVER® est une marque déposée européenne de MANAGED SERVER SRL, dont le siège social est situé Via Flavio Gioia, 6, 62012 Civitanova Marche (MC), Italie et le siège opérationnel Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italie.

JUSTE UN MOMENT !

Vous êtes-vous déjà demandé si votre hébergement était nul ?

Découvrez dès maintenant si votre hébergeur vous pénalise avec un site web lent digne des années 1990 ! Résultats immédiats.

Fermer le CTA
Retour en haut de page