28 Aprile 2023

Perchè non dovresti usare WP Rocket a causa del bug last-modified

Abbiamo scoperto un grave bug che affligge WP Rocket che potrebbe compromettere seriamente la SEO del tuo sito.

WP Rocket è uno dei plugin WordPress più utilizzati per migliorare le performance di un sito web. Stando alle dichiarazioni commerciali riportate nel loro sito Web, il plugin viene attualmente utilizzato da oltre 3 milioni di installazioni WordPress.

WP Rocket numero di installazioni

Tuttavia, considerando la diffusione enorme, piani di licenza multiple ed il fatto che WP Rocket è uno dei plugin WordPress più ambiti e più piratati di sempre, è pacifico affermare che WP Rocket stia funzionando attualmente su almeno 12 milioni di siti WordPress nel mondo.

Questo plugin offre molte funzionalità utili per ottimizzare la cache del sito e migliorare i tempi di caricamento delle pagine. WP Rocket salva la cache come files sul disco e offre molte opzioni di configurazione per ottimizzare le prestazioni del sito.

Nonostante WP Rocket sia una soluzione di caching molto apprezzata rispetto ad altri competitor, presenta un grave bug che potrebbe compromettere il posizionamento e l’indicizzazione del tuo sito. Questo bug riguarda il campo “last-modified” che viene utilizzato dai motori di ricerca per capire se una pagina è stata modificata di recente. Se questo campo non viene aggiornato correttamente, i motori di ricerca potrebbero non indicizzare correttamente il tuo sito e ciò potrebbe comportare una diminuzione del traffico organico.

Pertanto, è importante tenere in considerazione questo bug di WP Rocket quando si valuta l’utilizzo di questo plugin per la tua attività online. In questo testo, esamineremo in dettaglio questo bug e le conseguenze che potrebbe avere sul tuo sito web. Se vuoi ottenere il massimo dalla tua attività online e assicurarti che il tuo sito sia ben posizionato sui motori di ricerca, dovresti evitare l’uso di WP Rocket fino a quando questo bug non verrà risolto definitivamente.

Una panoramica sull’Header HTTP Last Modified.

L’header HTTP “Last-Modified” è un campo di intestazione utilizzato nella comunicazione client-server per fornire informazioni sulla data e l’ora dell’ultima modifica di una risorsa web. Questo campo viene inviato dal server al client come parte della risposta HTTP e contiene la data e l’ora in cui la risorsa è stata modificata per l’ultima volta.

Last Modified Header

Il suo scopo principale è quello di aiutare i client a determinare se una risorsa web è stata modificata dall’ultima volta che è stata acceduta, in modo da poter evitare di scaricare nuovamente la stessa risorsa se non è stata modificata.

In questo modo, il campo “Last-Modified” aiuta a ridurre il traffico di rete e a migliorare le prestazioni del sito web. Quando un client richiede una risorsa, può includere un campo di intestazione “If-Modified-Since” nella sua richiesta, contenente la data e l’ora dell’ultima modifica della risorsa che ha salvato. Se la risorsa non è stata modificata dall’ultima volta che è stata acceduta, il server risponde con uno stato “304 Not Modified”, evitando così di trasferire nuovamente la risorsa.

Last Modified ed i crawler di Google.

Il campo di intestazione HTTP “Last-Modified” fornisce informazioni sulla data e l’ora dell’ultima modifica di una risorsa web. Tuttavia, se questo campo viene configurato in modo errato e viene sempre restituita la data attuale, senza tenere conto della data effettiva dell’ultima modifica della risorsa, potrebbero verificarsi alcune conseguenze indesiderate per i crawler di Google.

In particolare, se l’header “Last-Modified” restituisce sempre la data e l’ora attuali, i crawler di Google potrebbero interpretare erroneamente la risorsa come una nuova pagina, anche se in realtà non è stata modificata. Questo potrebbe comportare una diminuzione delle prestazioni del sito web in termini di indicizzazione e posizionamento nei risultati di ricerca.

Inoltre, se il campo “Last-Modified” è impostato in modo errato, il server potrebbe inviare una risposta “200 OK” anche se la risorsa non è stata modificata dall’ultima volta che è stata acceduta. Ciò potrebbe comportare un aumento del traffico di rete e una diminuzione delle prestazioni del sito web, poiché i crawler di Google potrebbero scaricare nuovamente la stessa risorsa, nonostante essa non sia stata effettivamente modificata.

Last-Modified errato ed il Crawl Budget dei Google Bot.

Il crawl budget di Google rappresenta la quantità di risorse di un sito web che il motore di ricerca è disposto a dedicare alla scansione e all’indicizzazione del sito web. Questo budget dipende da molti fattori, tra cui la qualità del sito web, la frequenza di aggiornamento del contenuto e la velocità del sito web.

Crawl_budget_Google

Un header HTTP Last-Modified sempre aggiornato può essere dannoso per il crawl budget di Google in quanto potrebbe indurre il motore di ricerca a dedicare risorse inutili alla scansione di risorse che in realtà non sono state modificate. In particolare, se l’header Last-Modified viene aggiornato ogni volta che la cache viene rigenerata, anche se il contenuto non è stato modificato, Google potrebbe interpretare la risorsa come una nuova pagina e dedicare risorse inutili alla scansione di quella pagina.

Questo comporterebbe un uso inefficace del crawling budget di Google, che potrebbe essere meglio utilizzato per la scansione di altre risorse più rilevanti e aggiornate. Inoltre, un uso inefficace del crawl budget di Google potrebbe rallentare l’indicizzazione delle risorse più importanti del sito web.

Per evitare questo problema, è importante garantire che l’header HTTP Last-Modified venga aggiornato solo quando la risorsa è stata effettivamente modificata. In questo modo, si può garantire una corretta gestione del crawl budget di Google e migliorare l’indicizzazione complessiva del sito web.

WP Rocket ed il bug Last-Modified nel dettaglio.

Nel momento in cui WP Rocket genera la cache sul disco di post e pagine WordPress, sostituisce la data di Last-Modified dell’articolo con quella della generazione o rigenerazione della cache. Questo comporta che ogni volta che la cache viene rigenerata, WP Rocket aggiorna il campo Last-Modified, anche se l’articolo o la pagina potrebbe non essere stato modificato o aggiornato da anni.

Nello specifico WP Rocket determina la data del file Cache prodotto sul disco e propone quella data come header HTTP Last modified. Il codice incriminato è quello seguente:

Last-Modified-Bug-Wp-Rocket-Codice

Come possiamo vedere dal codice sopra, WP Rocket restituisce l’header Last-Modified, formattando la data recuperata dalla data della cache sul disco tramite la funziona PHP filemtime().

La funzione filemtime() di PHP è una funzione nativa che restituisce la data di ultima modifica di un file. Questa funzione è molto utile per verificare se un file è stato modificato rispetto a una versione precedente e per aggiornare la cache dei file.

Questo bug potrebbe causare alcuni problemi per i motori di ricerca e altri crawler che utilizzano il campo Last-Modified per determinare se una risorsa è stata modificata dall’ultima volta che è stata acceduta. Se il campo Last-Modified viene aggiornato ogni volta che la cache viene rigenerata, anche se l’articolo o la pagina non è stato modificato, i crawler potrebbero interpretare erroneamente la risorsa come una nuova pagina, anche se in realtà non è stata modificata.

Per evitare il bug Last-Modified, WP Rocket avrebbe dovuto aggiornare l’header HTTP nei file cache prodotti recuperando la data dell’ultima modifica del post o della pagina direttamente dal database di WordPress. In questo modo, il campo Last-Modified sarebbe stato sempre aggiornato solo quando la risorsa è stata effettivamente modificata, garantendo una corretta indicizzazione da parte dei motori di ricerca.

Per implementare questa soluzione, WP Rocket avrebbe dovuto utilizzare la funzione “get_post_modified_time()” di WordPress per recuperare la data di ultima modifica del post o della pagina. Questa funzione restituisce la data e l’ora dell’ultima modifica del post o della pagina, che possono essere utilizzati per aggiornare correttamente il campo Last-Modified nell’header HTTP.

Abbiamo ufficialmente segnalato il bug a WP Rocket.

L’errore che abbiamo scoperto è molto grave soprattutto considerando che non sia una svista degli sviluppatori, ma proprio la mancanza dei fondamentali e dei capisaldi su cosa sia e cosa serva l’header HTTP Last-Modified. Sviluppare dunque un plugin destinato a milioni, decine di milioni di siti web senza avere ben presente le logiche basilari di come dovrebbe funzionare la gestione degli header è un fatto non grave ma gravissimo.

Abbiamo pertanto voluto segnalare la cosa direttamente a WP Rocket, includendo nella richiesta di segnalazione un ipotetico esempio, in cui un ipotetico post pubblicato il 24 Dicembre per fare gli auguri di Natale ai lettori, risulterebbe con un Last-Modified header successivo, e posteriore al 24 Dicembre stesso, nonostante in alcun modo il post sia stato modificato.

Wp-Rocket-Last-Modified-BugCi hanno per ora ignorati ed invece di ringraziarci …

Può sembrare assurdo che a fronte di una problematica così grave segnalata al supporto tecnico, si siano limitati a comunicarci che non possono dar esito alla nostra richiesta in quanto la nostra licenza di Wp Rocket risulti scaduta.

Non è uno scherzo, ma è davvero quello che ci hanno risposto nella mail che riportiamo seguentemente.

Risposta-Mail-WP-Rocket-al-bug-Last-Modified

Viene da domandarsi se è giusto che un’azienda simile con un tale pressapochismo debba continuare a meritare la piena fiducia dei loro clienti, che ignari della gravità del loro comportamento vanno a creare dei veri danni ai siti dei loro clienti senza nemmeno saperlo o quanto meno volerlo sapere.

Per ora abbiamo sollecitato la richiesta utilizzando i giusti appellativi e specificando che non siano noi a chiedere supporto a loro, ma siamo noi ad offrirlo gratuitamente a loro visto la loro becera ignoranza in materia.

Siamo fiduciosi in un FIX quanto prima e nel frattempo vi consigliamo di monitorare la situazione sulle statistiche di scansione di Google e misurare eventuali effetti negativi qualora lo stiate già utilizzando.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Hetzner Online GmbH detiene i diritti su Hetzner®; OVHcloud è un marchio registrato di OVH Groupe SAS; cPanel®, L.L.C. detiene i diritti su cPanel®; Plesk® è un marchio registrato di Plesk International GmbH; Facebook, Inc. detiene i diritti su Facebook®. Questo sito non è affiliato, sponsorizzato o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello europeo da MANAGED SERVER SRL, Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italia.

SOLO UN ATTIMO !

Vorresti vedere come gira il tuo WooCommerce sui nostri sistemi senza dover migrare nulla ? 

Inserisci l'indirizzo del tuo sito WooCommerce e otterrai una dimostrazione navigabile, senza dover fare assolutamente nulla e completamente gratis.

No grazie, i miei clienti preferiscono il sito lento.
Torna in alto