SEO avanzata

13 min di lettura

SEO JavaScript per l'ecommerce

Le piattaforme ecommerce moderne si affidano sempre piu a framework JavaScript come React, Vue e Angular per offrire esperienze di acquisto dinamiche. Sebbene questi framework eccellano nella creazione di vetrine ricche e interattive, introducono sfide significative per il crawling e l'indicizzazione dei motori di ricerca. Comprendere come Googlebot elabora il JavaScript e implementare la giusta strategia di rendering puo fare la differenza tra migliaia di pagine prodotto indicizzate e un negozio invisibile.

Come Googlebot elabora il JavaScript

Googlebot utilizza un processo di indicizzazione in due fasi per le pagine con molto JavaScript. Nella prima fase, scansiona la risposta HTML grezza e indicizza il contenuto presente nella risposta iniziale del server. Nella seconda fase, mette la pagina in coda per il rendering usando un browser Chromium headless, esegue il JavaScript e poi indicizza il contenuto completamente renderizzato. Il problema critico e il divario tra queste due fasi.

La coda di rendering puo richiedere da pochi secondi a settimane a seconda dell'allocazione del budget di crawl di Google per il vostro dominio. Durante questo ritardo, qualsiasi contenuto che dipende dall'esecuzione JavaScript rimane invisibile per Google. Per un negozio ecommerce con migliaia di pagine prodotto, questo significa che nuovi prodotti e aggiornamenti dei prezzi potrebbero non apparire nei risultati di ricerca per giorni.

Il motore di rendering di Googlebot esegue una versione relativamente recente di Chromium, quindi le API JavaScript moderne sono generalmente supportate. Tuttavia, ha limitazioni importanti: non interagisce con le pagine (nessun clic, scorrimento o invio di moduli), ha un timeout di rendering di circa 5 secondi e blocca certi tipi di risorse.

Googlebot prima scansiona l'HTML grezzo, poi mette le pagine in coda per il rendering JavaScript separatamente
Il ritardo della coda di rendering puo variare da secondi a settimane a seconda del budget di crawl
Googlebot non interagisce con le pagine: nessun clic, scorrimento o invio di moduli
Il timeout di rendering e di circa 5 secondi per il primo paint significativo del contenuto
Tip

Utilizzate lo strumento di ispezione URL di Google Search Console con l'opzione 'Visualizza pagina testata' per vedere esattamente cosa renderizza Googlebot. Confrontate l'HTML renderizzato con la vostra pagina live per identificare il contenuto che non si carica durante il passaggio di rendering.

Strategie di rendering: CSR, SSR e SSG

Il rendering lato client (CSR) e il default per la maggior parte dei framework per applicazioni a pagina singola. Il server invia una struttura HTML minimale e un bundle JavaScript che costruisce l'intera pagina nel browser. Per il SEO ecommerce, il CSR puro e la scelta peggiore. Titoli, descrizioni, prezzi e dati strutturati dei prodotti sono assenti dall'HTML iniziale.

Il rendering lato server (SSR) genera l'HTML completo sul server per ogni richiesta, fornendo contenuto prodotto completo immediatamente. Framework come Next.js, Nuxt.js e Angular Universal offrono capacita SSR. Googlebot puo indicizzare questo contenuto nella prima fase di crawl.

La generazione di siti statici (SSG) pre-renderizza le pagine al momento del build, producendo file HTML statici serviti direttamente da un CDN. Per i cataloghi ecommerce con dati prodotto stabili, SSG offre i tempi di caricamento piu veloci.

La rigenerazione statica incrementale (ISR) offre un compromesso. Le pagine vengono generate staticamente ma possono essere rivalidate e rigenerate secondo un programma definito.

Il rendering ibrido, dove diversi tipi di pagina utilizzano strategie diverse, e l'approccio pragmatico per la maggior parte dei negozi ecommerce.

Il CSR puro lascia il contenuto prodotto critico invisibile finche Googlebot non renderizza il JavaScript
SSR fornisce HTML completo ad ogni richiesta, abilitando l'indicizzazione al primo passaggio
SSG pre-renderizza le pagine al momento del build per la massima velocita e crawlabilita garantita
ISR combina le prestazioni statiche con la freschezza periodica dei dati senza rebuild completi
Le strategie ibride assegnano metodi di rendering diversi a tipi di pagina diversi in base alle esigenze di indicizzazione

Elementi SEO critici nei framework JavaScript

I meta tag, gli URL canonici e i dati strutturati devono essere presenti nell'HTML renderizzato dal server, non iniettati lato client. Se il vostro framework genera il tag <title>, la meta description e il link canonico tramite JavaScript dopo il caricamento, Googlebot potrebbe mancarli durante il primo passaggio di crawl. Usate la soluzione di gestione head del vostro framework.

I link interni sono frequentemente rotti nei negozi ecommerce renderizzati in JavaScript. Menu di navigazione, breadcrumb, link di categoria e paginazione basati su gestori di eventi JavaScript anziche su tag <a href> standard sono invisibili a Googlebot. Ogni link di navigazione deve usare elementi ancora corretti con attributi href completi.

Il lazy loading delle immagini prodotto puo essere compatibile con il SEO se implementato correttamente. Usate l'attributo nativo loading='lazy' per le immagini sotto la piega, ma assicuratevi che le immagini prodotto principali si carichino immediatamente.

La gestione degli URL tramite la History API deve produrre URL reali e scansionabili. Se il vostro sistema di filtri prodotto cambia la visualizzazione senza aggiornare l'URL o usa routing basato su hash, i motori di ricerca non possono scoprire quegli stati.

Renderizzare meta tag, canonici e dati strutturati lato server, non tramite JavaScript lato client
Usare elementi ancora <a href> corretti per tutta la navigazione, breadcrumb e link di paginazione
Implementare il lazy loading con l'attributo nativo loading='lazy' per le immagini sotto la piega
Usare History API pushState per URL reali risolvibili dal server anziche routing basato su hash
Tip

Eseguite un test 'Disabilita JavaScript' su ogni tipo di pagina critica: dettaglio prodotto, categoria, risultati di ricerca e homepage. Se la pagina e vuota o mancano informazioni prodotto con JavaScript disabilitato, la vostra implementazione SSR e rotta e necessita attenzione immediata.

Ottimizzazione dei bundle JavaScript per l'efficienza di crawl

I bundle JavaScript grandi impattano direttamente sia l'esperienza utente che la capacita di Googlebot di renderizzare le vostre pagine. Ogni kilobyte di JavaScript che deve essere scaricato, parsificato ed eseguito ritarda il rendering del contenuto prodotto. Il budget di crawl di Google e finito, e JavaScript inefficiente spreca risorse di rendering.

Il code splitting e essenziale per i negozi ecommerce. Dividete il bundle JavaScript per route in modo che le pagine prodotto carichino solo il codice necessario per la visualizzazione del prodotto. Gli import dinamici permettono di differire funzionalita non critiche.

Il tree shaking elimina il codice inutilizzato dai vostri bundle. Verificate le dipendenze regolarmente poiche molti negozi importano intere librerie di utilita quando usano solo poche funzioni.

Gli script di terze parti sono la fonte piu comune di appesantimento JavaScript nell'ecommerce. Widget di chat, piattaforme analytics, motori di raccomandazione e pixel di retargeting aggiungono ciascuno JavaScript che compete con il rendering dei prodotti. Caricate gli script di terze parti in modo asincrono con gli attributi async o defer.

Monitorate il tempo di esecuzione JavaScript con la tab Performance di Chrome DevTools e Lighthouse. Puntate a un tempo di blocco totale sotto i 200ms e un time-to-interactive sotto i 3,8 secondi.

Dividere i bundle JavaScript per route per caricare solo codice specifico della pagina
Applicare tree shaking e verificare le dipendenze per eliminare il codice inutilizzato
Caricare script di terze parti in modo asincrono con attributi async o defer
Puntare a un tempo di blocco totale sotto 200ms e time-to-interactive sotto 3,8 secondi

Gestione del contenuto prodotto dinamico

Le pagine prodotto nei negozi ecommerce contengono diversi tipi di contenuto dinamico: prezzi che cambiano con le promozioni, stato dell'inventario in tempo reale, recensioni che si accumulano nel tempo e informazioni specifiche delle varianti. Ogni tipo richiede un approccio diverso per garantire la visibilita nei motori di ricerca.

I prezzi e la disponibilita devono essere renderizzati lato server con le informazioni della variante predefinita o canonica. Quando un utente seleziona una taglia o un colore diverso, il JavaScript lato client puo aggiornare il prezzo visualizzato. Lo stato predefinito renderizzato dal server e cio che Googlebot indicizzera.

Le recensioni prodotto sono critiche per il SEO perche forniscono contenuto unico, copertura di parole chiave a coda lunga e dati strutturati AggregateRating. Se le recensioni si caricano in modo asincrono tramite chiamate API, potrebbero non essere disponibili quando Googlebot renderizza la pagina.

La navigazione a faccette e i filtri prodotto presentano una sfida complessa di JavaScript SEO. Le interazioni dei filtri dovrebbero aggiornare l'URL con parametri scansionabili, ma la maggior parte delle combinazioni di filtri dovrebbe essere bloccata dall'indicizzazione per prevenire il gonfiamento dell'indice.

Renderizzare prezzi e disponibilita della variante predefinita lato server per l'indicizzazione al primo passaggio
Includere lo schema AggregateRating lato server anche se le singole recensioni si caricano in modo asincrono
Usare link <a href> corretti nei widget di raccomandazione per la scoperta di link interni
Controllare l'indicizzazione della navigazione a faccette rendendo scansionabili solo le combinazioni di filtri ad alto valore
Tip

Create una checklist di test di rendering che verifichi ogni elemento della pagina prodotto sia contro l'HTML renderizzato dal server che contro il DOM completamente renderizzato. Automatizzate questo test per eseguirlo ogni notte su un campione di pagine prodotto.

Test e monitoraggio del JavaScript SEO

Il monitoraggio continuo della pipeline di rendering JavaScript e essenziale perche gli aggiornamenti del framework, le modifiche agli script di terze parti e le modifiche del CMS possono rompere il rendering lato server senza sintomi visibili all'utente. Una pagina che funziona perfettamente per gli utenti puo essere completamente vuota per Googlebot se SSR fallisce silenziosamente.

Il rapporto Copertura di Google Search Console e il vostro strumento di monitoraggio principale. Osservate i picchi nelle categorie 'Scoperta - attualmente non indicizzata' o 'Scansionata - attualmente non indicizzata', che spesso indicano fallimenti di rendering.

Impostate test di rendering automatizzati usando script Chrome headless o Puppeteer che simulano il comportamento di Googlebot. Questi test dovrebbero disabilitare JavaScript, catturare l'HTML renderizzato dal server, poi riabilitare JavaScript e confrontare il DOM renderizzato.

Monitorate i tassi di errore JavaScript in produzione con servizi di tracciamento errori come Sentry o Datadog. Gli errori che impediscono il rendering nell'ambiente di Googlebot potrebbero non manifestarsi nei browser regolari.

Tracciate le prestazioni di rendering della pagina specificamente dalla prospettiva SSR. Monitorate i tempi di risposta SSR separatamente e impostate avvisi per tempi di risposta che superano 1-2 secondi.

Monitorare la Copertura di Search Console per picchi di pagine non indicizzate o errori di rendering
Automatizzare confronti di rendering tra HTML del server e DOM renderizzato da JavaScript
Tracciare errori JavaScript nei contesti di browser headless con servizi di monitoraggio errori
Monitorare i tempi di risposta SSR separatamente e avvisare in caso di degradazione oltre 1-2 secondi

Lavora con esperti SEO che capiscono l’e-commerce

La prima agenzia SEO al mondo fondata dall’e-commerce

SEO JavaScript per l'ecommerce - EcomSEO Academy | EcomSEO