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

Modulo 6 · 6.3

Immagini, PHP e altri guadagni di velocità

Modulo 6: Velocità · Tempo di lettura: 9 minuti

Obiettivo della lezione: Dopo questa lezione saprà applicare i maggiori guadagni di velocità rimanenti e misurarne l'effetto.

Concetti chiave: ottimizzazione delle immagini, WebP e AVIF, lazy loading, l'immagine LCP, fetchpriority, versione PHP, pulizia del database (revisioni, transients, autoload), WP-Cron, cron reale, DISABLE_WP_CRON, font esterni, Heartbeat

Lavori nell'ordine giusto

Dopo una cache di pagina (lezione 6.2), questi sono i guadagni che rendono di più, approssimativamente in ordine di sforzo rispetto a effetto:

  1. immagini in ordine;
  2. una versione PHP aggiornata;
  3. meno componenti esterni e plugin pesanti;
  4. un database pulito;
  5. attività pianificate su un cron reale.

Misuri prima e dopo ogni passaggio (lezione 6.1), altrimenti non saprà cosa ha aiutato. E faccia una cosa alla volta.

Immagini: il guadagno maggiore nel browser

Nella maggior parte delle pagine, le immagini costituiscono la parte più grande di ciò che un visitatore scarica. Quanto ha imparato nella lezione 4.4 qui dà i suoi frutti:

  • Dimensione corretta: non carichi immagini più grandi del necessario e lasci che WordPress offra formati più piccoli tramite srcset.
  • Compressione e formato: WebP è generalmente molto più piccolo di JPEG a parità di qualità; AVIF spesso ancora più piccolo. Un plugin può convertire le immagini esistenti e fornire la versione più piccola ai browser che la supportano. Verifichi se la conversione avviene sul Suo stesso server o presso un servizio esterno.
  • Lazy loading, ma non per tutto. WordPress assegna automaticamente alle immagini loading="lazy", tranne alla prima grande immagine in alto. Quell'immagine è spesso l'elemento LCP (lezione 6.1): la porzione di contenuto più grande che il visitatore vede per prima. Se viene caricata in modo lazy, il browser aspetta proprio con quella, e il Suo LCP peggiora. Per questo motivo WordPress assegna spesso al candidato LCP fetchpriority="high", in modo che il browser lo recuperi per primo.
<img src="hero-1536x864.webp" width="1536" height="864"
     fetchpriority="high" alt="Officina con biciclette allineate">
<img src="team-768x512.webp" width="768" height="512"
     loading="lazy" alt="Il team davanti al negozio">

Un'insidia: alcuni temi, costruttori di pagine e plugin di ottimizzazione applicano il lazy loading anche alla prima immagine, oppure caricano l'immagine grande come sfondo tramite CSS (che viene scoperta più tardi). In PageSpeed Insights, nella sezione LCP, vede quale elemento è e se viene caricato in modo lazy.

PHP: velocità gratuita

Ogni nuova versione principale di PHP è più veloce della precedente, e i siti WordPress ne beneficiano immediatamente, senza modificare nulla nel Suo sito. Inoltre, le versioni vecchie non ricevono più aggiornamenti di sicurezza (lezione 8.4). Se passa a una versione più recente, verifichi che i Suoi plugin e il Suo tema la supportino, e lo faccia preferibilmente prima in un sito di staging.

Nelle impostazioni PHP, guardi anche a:

  • OPcache: nella maggior parte degli hosting è attivo per impostazione predefinita. Una conseguenza: un file PHP modificato può richiedere un po' di tempo prima che PHP utilizzi la nuova versione.
  • memory_limit: un valore troppo basso causa errori con pagine pesanti; un valore molto alto non rende il Suo sito più veloce.

Componenti esterni e plugin pesanti

Ogni componente di terze parti è una connessione aggiuntiva e un tempo di attesa in più: font di un servizio esterno, un video incorporato, un widget di chat, codici di tracciamento, pulsanti dei social media, una mappa. Domande per ogni componente:

  • È necessario? Un video che quasi nessuno riproduce può anche essere sostituito con un'immagine con un link.
  • Può essere locale? I font di solito può metterli sul Suo stesso server (con un plugin o tramite theme.json in un tema a blocchi). Questo elimina una connessione ed è meglio per la Sua privacy (lezione 9.3).
  • Può essere posticipato? Un widget di chat o un video può caricarsi solo dopo un clic.

Per i plugin aiuta misurare con X-Ray (con hosting su CloudLinux) o con un plugin come Query Monitor (da attivare temporaneamente, visibile solo agli amministratori). Questi mostrano quale plugin costa più richieste al database o più tempo.

Pulire il database

Un database cresce con cose che non vede:

  • Revisioni (lezione 4.1): ogni versione salvata di ogni pagina. Le limiti con WP_POST_REVISIONS e ripulisca quelle vecchie.
  • Commenti di spam e nel cestino, e articoli nel cestino.
  • Transients: dati temporanei dei plugin in wp_options, che a volte non vengono ripuliti.
  • Autoload: le opzioni in wp_options con autoload attivo vengono caricate tutte insieme a ogni richiesta. I plugin che ha rimosso già da tempo a volte lasciano lì grandi quantità di dati. Salute del sito (lezione 5.4) avvisa se i dati autoload sono molto grandi.
  • Tabelle di log dei plugin (statistiche, log di sicurezza, log email) che non vengono mai svuotate.

Può ripulire con un plugin di pulizia, con WP-CLI (wp transient delete --expired, wp post delete $(wp post list --post_type=revision --format=ids) --force), oppure con la funzione di ottimizzazione di phpMyAdmin per le tabelle stesse. Esegua sempre prima un backup. Non rimuova nulla di cui non sa cosa sia.

Attività pianificate: WP-Cron

WordPress ha attività che devono essere eseguite a un determinato orario: pubblicare un articolo pianificato, controllare gli aggiornamenti, far funzionare un plugin di backup. Questo si chiama WP-Cron. Per impostazione predefinita, WP-Cron non funziona secondo un orologio, ma a ogni visita: a ogni richiesta di pagina, WordPress controlla se c'è un'attività pronta. Due svantaggi:

  • Con pochi visitatori, le attività vengono eseguite troppo tardi (un articolo pianificato appare solo alla prima visita successiva).
  • Con molti visitatori, il controllo avviene molto spesso, e un'attività pesante può proprio rallentare la pagina di un visitatore.

Meglio: disattivi WP-Cron durante le visite e lasci che sia un vero e proprio cronjob del server a eseguirlo ogni cinque o dieci minuti. In wp-config.php (sopra "stop con la modifica"):

define( 'DISABLE_WP_CRON', true );

E nella schermata cron del Suo pannello di hosting, un'attività ogni 10 minuti:

*/10 * * * *  /usr/local/bin/php /home/gebruiker/domains/example.com/public_html/wp-cron.php >/dev/null 2>&1

Il percorso verso PHP e verso il Suo sito varia a seconda dell'hoster; consulti la guida del Suo pannello. Oppure usi WP-CLI: wp cron event run --due-now. Verifichi successivamente in Salute del sito che non ci siano attività pianificate in ritardo.

Heartbeat e l'area di amministrazione

La Bacheca di WordPress, finché rimane aperta, comunica con il server ogni 15-60 secondi (l'Heartbeat): per il salvataggio automatico, per segnalare che qualcun altro sta modificando lo stesso articolo, e per le notifiche. Se tiene dieci schede con l'area di amministrazione aperte tutto il giorno, si tratta di migliaia di richieste. Chiuda le schede che non utilizza. Alcuni plugin di cache possono rallentare l'Heartbeat; disattivarlo completamente non è necessario e interrompe il salvataggio automatico.

Riepilogo

  • Dopo la cache di pagina: immagini, versione PHP, componenti esterni e plugin, database, cron. Misuri prima e dopo, un passaggio alla volta.
  • Lazy loading per tutto tranne la grande immagine in alto; quella preferisce avere fetchpriority="high".
  • Una versione PHP più recente è velocità gratuita, a condizione che i Suoi plugin la supportino.
  • Ripulisca revisioni, transients, spam e grandi dati autoload, sempre con un backup.
  • Imposti WP-Cron su un vero cronjob con DISABLE_WP_CRON e un'attività nel Suo pannello.

Quiz

1. Perché la grande immagine in alto alla pagina non deve essere caricata in modo lazy?



2. Su un sito poco frequentato, gli articoli pianificati a volte appaiono con ore di ritardo. Qual è la causa e la soluzione?



3. Cos'è "autoload" in wp_options, e perché può rallentare un sito?



4. Qual è un buon argomento per mettere i font sul Suo stesso server invece che presso un servizio esterno?



Esercizio

Esercizio A6.3: Lazy loading e formati sulla Sua home page. Inserisca l'indirizzo del Suo sito. Il programma legge la home page e osserva le immagini: la prima grande immagine è priva di loading="lazy" (e preferibilmente ha fetchpriority="high"), le immagini successive hanno il lazy loading, e quale parte delle immagini è WebP o AVIF?

Esercizio A6.3: Lazy loading e formati sulla Sua home page


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.

Esercizio D6.3: Prima e dopo. Misuri una pagina del Suo sito tre volte in PageSpeed Insights (mobile) e annoti il valore mediano di LCP, INP (o il valore di laboratorio Total Blocking Time se non ci sono dati sul campo), CLS e il TTFB dell'esercizio A6.1. Esegua poi un miglioramento tra quelli descritti in questa lezione (immagini, versione PHP, rimozione di un componente esterno, pulizia del database o un cron reale). Misuri di nuovo tre volte e annoti i nuovi valori. Descriva cosa ha fatto e se la differenza è maggiore della normale oscillazione tra misurazioni.

Esercizio D6.3: Prima e dopo

Questo esercizio lo svolge da sé; nessuno lo verifica. Spunti ciò che ha fatto e segni l'esercizio come completato.




Le Sue spunte e note restano solo in questo browser; non le inviamo da nessuna parte. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che ha svolto l'esercizio.

Per approfondire

Questi articoli descrivono i passaggi nei pannelli di WebOké; in altri pannelli funzionano in modo 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…