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 1 · 1.2

Sotto il cofano: server web, PHP e database

Modulo 1: Come funziona WordPress · Tempo di lettura: 8 minuti

Obiettivo della lezione: dopo questa lezione sarà in grado di spiegare passo per passo come una richiesta di pagina diventa, in WordPress, una pagina HTML, e dove una cache accorcia questo percorso.

Concetti chiave: server web (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, query, index.php, gerarchia dei template, dinamico vs statico, TTFB

Una pagina statica e una pagina dinamica

In un sito web statico, ogni pagina è un file già pronto sul server. Il server web prende il file e lo invia. È veloce e semplice, ma ogni modifica richiede un nuovo file.

WordPress è dinamico: la pagina esiste solo nel momento in cui qualcuno la richiede. Non esiste un file contact.html. C'è un testo nel database, un tema con dei template e una serie di codice PHP che unisce i due elementi. Questo offre comodità (può modificare il testo nel Suo browser), ma richiede del lavoro di elaborazione a ogni visita. Comprendendo questo lavoro di elaborazione, capirà anche più avanti perché un sito è lento, perché la cache fa così tanta differenza e perché un aggiornamento di PHP può rompere qualcosa.

Il percorso di una richiesta di pagina

Supponga che un visitatore apra https://example.com/contact/. Ecco cosa succede:

  1. DNS: il browser cerca l'indirizzo IP di example.com (veda il corso DNS). Stabilisce una connessione sicura con quell'indirizzo.
  2. Server web: sul server gira un server web, per esempio LiteSpeed, Apache o nginx. Questo riceve la richiesta. Se esiste un file o una cartella reale con quel nome (un'immagine, un foglio di stile), lo invia direttamente. In caso contrario, vale la regola contenuta nel file .htaccess (per LiteSpeed e Apache) o nella configurazione di nginx: "invia tutto ciò che non esiste a index.php".
  3. PHP: index.php è un file PHP. Il server web lo fa eseguire da PHP, il linguaggio di programmazione in cui è scritto WordPress. PHP carica prima wp-config.php (le impostazioni, con i dati del database), poi il resto di WordPress, poi tutti i plugin attivi e il tema attivo.
  4. Database: WordPress verifica quale contenuto corrisponde a /contact/ e interroga il database (MariaDB o MySQL): quale pagina ha lo slug contact, quali sono le impostazioni del sito, quale menu le appartiene? Questa interrogazione si chiama query. Una pagina semplice richiede già decine di query; con i plugin possono diventare centinaia.
  5. Tema: WordPress sceglie quale template del tema formatta la pagina. Questo avviene secondo la gerarchia dei template: per una pagina con slug contact, WordPress cerca prima un template page-contact, poi page-<id> (il numero della pagina), poi page, poi singular e infine index. Il primo che esiste vince.
  6. HTML restituito: il risultato è una pagina HTML che PHP fornisce al server web, e il server web al browser.
  7. Il browser legge l'HTML e poi recupera anche i fogli di stile, gli script, i caratteri e le immagini. Questi sono file normali, quindi arrivano direttamente dal server web (o da una cache).

Tra il passaggio 2 e il passaggio 6 c'è il tempo di cui il server ha bisogno per creare la pagina. Lo vede riflesso nel TTFB (time to first byte): il tempo tra la richiesta e il primo byte della risposta. Su un sito ben configurato, questo tempo è ben al di sotto di un secondo. Nel modulo 6 lo misurerà Lei stesso.

Perché ogni plugin conta

Al passaggio 3 vengono caricati tutti i plugin attivi, a ogni richiesta. Anche se quel plugin non fa nulla su questa pagina. Un plugin per una galleria fotografica viene quindi caricato anche quando qualcuno apre la Sua pagina di contatto. Ogni plugin può eseguire query aggiuntive, caricare codice aggiuntivo e aggiungere script aggiuntivi alla pagina.

Questo spiega due cose che incontrerà più spesso in questo corso:

  • Meno plugin è di solito più veloce. Non perché il numero in sé conti, ma perché ogni plugin può svolgere del lavoro a ogni richiesta.
  • Un plugin rotto può bloccare l'intero sito. Se al passaggio 3 qualcosa va storto (per esempio un plugin che non funziona con la nuova versione di PHP), PHP non arriva mai al passaggio 6. Il visitatore riceve una pagina bianca o il messaggio "Si è verificato un errore critico su questo sito web" (lezione 5.4).

Da dove provengono PHP e il database

PHP e il database girano sul server del Suo hosting provider. Di solito sceglie Lei stesso la versione di PHP nel pannello di controllo (in DirectAdmin questa opzione si chiama Select PHP version, veda la lezione 8.4). Il database viene creato durante l'installazione; spesso lo fa per Lei il programma di installazione (lezione 2.2).

Alcune cose da ricordare:

  • Versione di PHP: ogni nuova versione di PHP è più veloce e più sicura, ma il codice vecchio può interrompersi. wordpress.org attualmente consiglia PHP 8.3 o superiore (dati aggiornati a novembre 2026).
  • Database: wordpress.org consiglia MariaDB 10.11 o superiore, oppure MySQL 8.0 o superiore. MariaDB è una derivazione di MySQL; per WordPress non fa alcuna differenza.
  • Il database si trova di solito sullo stesso server (DB_HOST è allora localhost). Con hosting più grandi può trovarsi su un server separato.

Cache: accorciare il percorso

Se cento visitatori richiedono la stessa pagina di contatto, senza cache WordPress la ricrea cento volte. Ogni volta le stesse query, lo stesso template, lo stesso HTML. Una cache di pagina conserva l'HTML dopo la prima volta. Il visitatore successivo riceve la versione salvata: i passaggi da 3 a 6 vengono saltati.

Zonder cache:  browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache:     browser > webserver > opgeslagen HTML

Ecco perché la cache offre il maggior guadagno di velocità (lezione 6.2). Questo spiega anche un fraintendimento comune: "ho modificato il testo, ma vedo ancora la versione vecchia." In quel caso Lei vede una versione salvata; dopo aver svuotato la cache vedrà la nuova versione.

Non tutto può provenire da una cache. Un amministratore collegato, un carrello della spesa o una pagina di pagamento sono diversi per ogni visitatore. Un buon plugin di cache li esclude.

Intestazioni: cosa Le comunica il server

Ogni risposta di un server web inizia con delle intestazioni (header), prima dell'HTML. Non le vede sulla pagina, ma può vederle negli strumenti di sviluppo del Suo browser (F12, scheda Network/Rete, aggiorni la pagina, clicchi sulla prima richiesta). Un esempio:

HTTP/2 200
server: LiteSpeed
content-type: text/html; charset=UTF-8
link: <https://example.com/wp-json/>; rel="https://api.w.org/"
x-litespeed-cache: hit
  • server indica quale server web risponde.
  • link con wp-json rivela che si tratta di WordPress.
  • x-litespeed-cache: hit significa che questa pagina proviene dalla cache di LiteSpeed. Altre cache usano nomi diversi, come x-cache: HIT oppure cf-cache-status: HIT con Cloudflare.

Non deve imparare a memoria queste righe. Ma chi sa leggerle può individuare da solo molti problemi.

Riepilogo

  • WordPress crea ogni pagina nel momento della richiesta: server web, PHP, plugin, database, tema, HTML.
  • A ogni richiesta vengono caricati tutti i plugin attivi; un plugin rotto può bloccare l'intero sito.
  • La gerarchia dei template determina quale template del tema formatta una pagina.
  • Una cache di pagina salta il lavoro di elaborazione fornendo HTML salvato. Gli utenti collegati e i carrelli della spesa non devono trovarsi in quella cache.
  • Le intestazioni di una risposta indicano quale server web risponde e se la pagina proviene da una cache.

Quiz

1. Chi esegue il codice PHP di WordPress?



2. Un sito con 40 plugin è lento, anche su pagine dove quei plugin non fanno nulla di visibile. Qual è la spiegazione migliore?



3. Da dove proviene di solito un foglio di stile come /wp-content/themes/thema/style.css?



4. Nelle intestazioni vede x-litespeed-cache: hit. Cosa significa?



5. Quale template usa WordPress per una pagina con slug contact se il tema ha solo page e index?



Esercizio

Esercizio A1.2: Legga le intestazioni del Suo sito. Apra il Suo sito (oppure wordpress.org) con gli strumenti di sviluppo del Suo browser (F12, scheda Network/Rete, aggiorni la pagina, clicchi sulla prima richiesta). Indichi quale server web compare nell'intestazione server (oppure "nessuno" se non è presente) e se esiste un'intestazione che indica che la pagina proviene da una cache (quale nome e quale valore). Il programma richiede la stessa pagina e confronta i risultati.

Esercizio A1.2: Legga le intestazioni del Suo sito




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 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…