Vai al contenuto

Impostazioni cookie

Scelga per ogni tipo quali cookie consente. Può modificare la sua scelta in qualsiasi momento tramite Impostazioni cookie in fondo a ogni pagina. Informativa sulla privacy

Necessari

Sempre attivi

Servono per accedere, conservare il carrello e ricordare le sue scelte. Sono sempre attivi.

Quali cookie?
  • weboke_sessie, weboke_klant, weboke_remember: la sua sessione e la permanenza dell'accesso
  • weboke_basket: il suo carrello
  • wkBtwIncl: visualizzazione dei prezzi con o senza IVA
  • wok_cookies: la sua scelta sui cookie, 12 mesi

Misurano quale annuncio porta a una visita o a un ordine, così non paghiamo annunci che non funzionano.

Quali cookie?
  • Google Ads tramite Google Tag Manager (_gcl_au, _gcl_aw), fino a 90 giorni
  • OpenAI Ads, annunci in ChatGPT
  • wok_aff: tramite quale partner è arrivato da noi (programma di affiliazione), 60 giorni

4,6

Paese e lingua

Ogni paese ha il suo sito, con i prezzi e l'IVA di quel paese.

Vedi

Velocità e cache in un negozio online

Modulo 6: Gestione e sicurezza · Tempo di lettura: 10 minuti

Obiettivo della lezione: Al termine di questa lezione saprà configurare la cache di un negozio WooCommerce in modo che il negozio sia veloce e che le pagine personali non finiscano mai nella cache. Saprà inoltre verificarlo tramite le intestazioni HTTP.

Concetti chiave: cache della pagina, esclusioni (carrello, pagamento, Il mio account), cookie che aggirano la cache, intestazioni no-cache, DONOTCACHEPAGE, cache degli oggetti, Redis, frammenti del carrello, geolocalizzazione con cache della pagina, pulizia delle azioni programmate

Due tipi di pagine

Le basi della cache (cache della pagina, cache del browser, cache degli oggetti, OPcache, una CDN) sono spiegate nel corso su WordPress, lezione 6.2. Lì trova già anche la regola più importante per i negozi: le pagine personali non devono entrare nella cache della pagina. Questa lezione la approfondisce.

Un negozio ha due tipi di pagine:

TipoEsempiCache
Uguali per tuttihomepage, pagina del negozio, categorie, pagine prodotto, pagine informativeCache della pagina: sì, qui si ottiene il guadagno maggiore
Diverse per ogni visitatorecarrello, pagamento, Il mio account, la pagina di recesso con un cliente che ha effettuato l'accessoCache della pagina: mai

Se qualcosa va storto, lo si nota subito: un cliente vede il carrello di un altro o, peggio ancora, l'indirizzo di qualcun altro nella pagina di pagamento. Si tratta anche di una violazione dei dati personali ai sensi del GDPR (KB 6749).

Che cosa fa già WooCommerce

WooCommerce aiuta la cache in tre modi. È utile conoscerli, così si accorge quando qualcosa li elimina:

  1. Costanti. Nelle pagine carrello, pagamento e Il mio account WooCommerce imposta DONOTCACHEPAGE (e anche le costanti per la cache degli oggetti e del database). Molti plugin di cache leggono questa costante e saltano quindi la pagina.
  2. Intestazioni. Nelle stesse pagine WooCommerce invia le intestazioni no-cache di WordPress: Cache-Control: no-cache, must-revalidate, max-age=0, private e un Expires nel passato. Un proxy o una CDN che rispetta le regole non conserva quindi la pagina. Per gli utenti che hanno effettuato l'accesso si aggiunge no-store.
  3. Cookie. Non appena qualcuno mette un articolo nel carrello, WooCommerce imposta cookie come woocommerce_items_in_cart, woocommerce_cart_hash e wp_woocommerce_session_.... Le buone cache non servono più pagine memorizzate ai visitatori con uno di questi cookie, nemmeno per le pagine prodotto, perché ad esempio il mini carrello nell'intestazione del sito diventa diverso per ogni visitatore.

Per i plugin di cache la documentazione di WooCommerce indica di escludere carrello, Il mio account e pagamento, oltre ai cookie woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed e store_notice[...]. Per Varnish fornisce anche regole per gli indirizzi con ?add-to-cart=.

Dove si sbaglia nella pratica

  • Indirizzi diversi per le pagine del negozio. Ha rinominato il carrello in /mandje/ oppure un plugin di traduzione crea /de/warenkorb/. Una cache che esclude indirizzi fissi come /cart non li riconosce. I plugin di cache che conoscono WooCommerce leggono le pagine dalle impostazioni; una cache sul server o presso una CDN non lo fa.
  • Una CDN che mette tutto in cache. Alcune regole CDN ("cache everything") ignorano le intestazioni. In questo caso escluda esplicitamente le pagine del negozio e i cookie indicati.
  • Un plugin che sovrascrive le intestazioni. Un plugin di sicurezza o di velocità a volte imposta Cache-Control: public, max-age=... su ogni pagina. Le intestazioni no-cache allora non ci sono più.
  • Una sessione per ogni visitatore. Normalmente WooCommerce imposta un cookie di sessione solo quando c'è qualcosa nel carrello. Se un plugin o un tema avvia già una sessione per ogni visitatore (un cookie wp_woocommerce_session_ o PHPSESSID alla prima visita), la cache della pagina viene meno per tutti e nei momenti di traffico intenso il Suo negozio diventa lento.
  • Geolocalizzazione. In WooCommerce > Impostazioni > Generale si sceglie la posizione predefinita del cliente. Con la semplice opzione "Geolocalizza" il server calcola il paese per ogni visitatore e, con prezzi per paese, ciò non è compatibile con una cache della pagina. Per questo WooCommerce offre l'opzione "Geolocalizza (con supporto per la cache della pagina)", che determina il paese tramite una richiesta aggiuntiva nel browser. Se non Le servono prezzi o IVA per paese prima del pagamento, scelga il paese del negozio: è la soluzione più semplice. Per la geolocalizzazione WooCommerce scarica periodicamente un database di MaxMind.

Su un server LiteSpeed (come presso WebOké) il plugin LiteSpeed Cache gestisce da solo le esclusioni per WooCommerce; le verifichi nelle impostazioni di esclusione. Con altri server web e altri provider il funzionamento è simile con un altro plugin di cache.

Che cosa la cache della pagina non risolve

Carrello e pagamento vengono sempre generati da PHP e dal database. Nei momenti di traffico intenso (una promozione, una newsletter) sono proprio le pagine in cui i Suoi clienti spendono denaro. Lì aiutano altre misure:

  • Una cache degli oggetti come Redis conserva in memoria il risultato delle query al database. In un negozio, con molte pagine che non possono entrare nella cache della pagina, il beneficio è nettamente maggiore che in un sito normale. Il Suo hosting deve offrire Redis (presso WebOké è possibile, DA 15.7); poi lo attiva con un plugin.
  • Frammenti del carrello. I temi classici aggiornano il mini carrello nell'intestazione con uno script (wc-cart-fragments) che, con un carrello pieno, esegue una richiesta aggiuntiva. I moderni temi a blocchi con il blocco mini carrello ne hanno meno bisogno. Non carichi questi script nelle pagine in cui non servono.
  • Azioni programmate ripulite. WooCommerce usa l'Action Scheduler per le attività in background (lezione 7.3). Le azioni completate vengono eliminate per impostazione predefinita dopo un mese. Se l'elenco arriva comunque a centinaia di migliaia di voci, spesso per un'estensione che continua a programmare qualcosa o per azioni non riuscite, le query al database diventano più lente. In WooCommerce > Stato > Azioni programmate controlli il numero di azioni non riuscite e in attesa.
  • HPOS. Gli ordini in tabelle proprie (lezione 1.2) rendono la ricerca negli ordini più veloce rispetto alla vecchia tabella degli articoli. I negozi esistenti devono effettuare il passaggio da soli (lezione 6.2 sui backup preliminari).
  • Una versione PHP aggiornata e memoria sufficiente (lezione 7.2).

In pratica: ecco come appare in WooCommerce

Lo verifichi per Theehuis Example in una finestra privata con gli strumenti per sviluppatori del Suo browser (F12, scheda Network, prima richiesta):

  1. Homepage, caricata due volte: al secondo caricamento un'intestazione come x-litespeed-cache: hit o cf-cache-status: HIT. Nessun cookie wp_woocommerce_session_ alla prima visita.
  2. shop.example.com/winkelwagen/, caricata due volte: nessun hit, e cache-control con no-cache o private.
  3. Lo stesso per pagamento e Il mio account.
  4. Metta un prodotto nel carrello e carichi una pagina prodotto: vede il Suo carrello, non una versione memorizzata.

Riepilogo

  • Le pagine uguali per tutti vanno nella cache; carrello, pagamento e Il mio account mai.
  • WooCommerce imposta da solo DONOTCACHEPAGE, le intestazioni no-cache e i cookie; verifichi che nulla li elimini o li ignori.
  • Faccia attenzione agli indirizzi rinominati, alle regole CDN, ai plugin che sovrascrivono le intestazioni, alle sessioni per ogni visitatore e alla geolocalizzazione.
  • Redis, azioni programmate ripulite, HPOS e una buona versione PHP aiutano dove la cache della pagina non può intervenire.
  • Verifichi caricando due volte in una finestra privata e leggendo le intestazioni.

Quiz

1. Un cliente vede nel proprio carrello prodotti che non ha scelto. Qual è la causa più probabile?



2. Quale intestazione si aspetta nella pagina di pagamento di un negozio WooCommerce?



3. Il Suo negozio non mostra prezzi per paese, ma la posizione predefinita è impostata su "Geolocalizza". Qual è un semplice miglioramento per la cache?



4. Perché Redis è più utile in un negozio che in un normale sito informativo?



Esercizio

Esercizio A6.4: Carrello e pagamento restano fuori dalla cache? Inserisca l'indirizzo del Suo negozio e gli indirizzi della pagina del carrello e della pagina di pagamento (ed eventualmente di Il mio account). Il programma richiede la homepage due volte a 2 secondi di distanza, senza cookie, e poi richiede anche ogni pagina del negozio due volte. Non viene messo nulla nel carrello e non viene ordinato nulla. Verde se la homepage al secondo caricamento proviene dalla cache (o è chiaramente più veloce) senza impostare un cookie di sessione, e se ogni pagina del negozio al secondo caricamento non ha un hit della cache e invia un Cache-Control con no-cache, no-store, private o max-age=0. Arancione se la homepage non usa la cache, oppure se una pagina del negozio non ha un hit ma nemmeno un'intestazione no-cache. Rosso in caso di hit della cache su carrello, pagamento o Il mio account, oppure se la homepage avvia una sessione WooCommerce per ogni visitatore.

Una spunta verde significa che questo controllo ora è superato, non che il Suo negozio sia sicuro.

Esercizio A6.4: Carrello e pagamento restano fuori dalla cache?





Quello che inserisce e quello che rileviamo non vengono salvati. Il Suo browser ricorda le Sue risposte e se ha superato l'esercizio. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che l'esercizio era (quasi) corretto; anche lì può eliminarlo.

Per saperne di più

I passaggi in un pannello valgono per WebOké; con altri fornitori il funzionamento è simile.

Un momento…

Configuri i suoi domini

Per ogni dominio imposti i nameserver, il collegamento al suo hosting e chi ne diventa l'intestatario.

Caricamento dei suoi domini…