Drupal performance: BigPipe e cache

Performance Drupal

Drupal 9/10/11 e' notoriamente esoso di risorse, ma con la giusta configurazione di cache può servire migliaia di richieste/secondo con latenza minima. Il sistema di cache di Drupal e' a più livelli: render cache, page cache, dynamic page cache, BigPipe.

Internal Page Cache

La Internal Page Cache serve pagine HTML cached interamente agli utenti anonimi. Cache key basata su URL+lingua. Velocissima ma esclude qualsiasi contenuto user-specific. Va abilitata sempre per siti con traffico anonimo.

Dynamic Page Cache

La Dynamic Page Cache funziona anche per utenti loggati: cacha la pagina con placeholder per le parti dinamiche (es. user menu, cart counter). Render cache risolve i placeholder. Performance simile a page cache anche per utenti autenticati.

BigPipe

BigPipe (modulo core abilitato di default) implementa la tecnica Facebook di streaming HTML: la struttura della pagina arriva subito, le parti dinamiche (placeholder) sono streamate via chunked HTTP. L'utente percepisce un Time to First Byte ridotto e progressive rendering.

Cache tags

Drupal usa cache tags per invalidare la cache in modo chirurgico. Ogni entità ha il proprio tag (es. node:42): quando viene modificata, tutti gli oggetti cache che la contengono sono invalidati. Niente cache stale anche con cache aggressivo.

Cache contexts

I cache contexts variant la cache per dimensione: user.roles, url.path, languages, user.permissions. Una view con accesso role-based avra' un cache item distinto per ogni combinazione di ruoli.

Reverse proxy / CDN

Per scala maggiore, davanti a Drupal si mette Varnish, Nginx FastCGI cache o un CDN (Cloudflare, Fastly, Akamai). Le cache tag Drupal possono invalidare CDN via purge modulo.

OPcache PHP

OPcache deve essere sempre attivo con dimensione adeguata (256MB+): elimina il parsing PHP ad ogni richiesta. Drupal include OPcache check nelle status reports.

Database

MySQL 8 / MariaDB 10.6+ con InnoDB buffer pool dimensionato (50-70% RAM), query cache disabilitata (deprecated in MySQL 8), slow query log per identificare query problematiche.

Frontend

  • CSS/JS aggregation: ON in produzione
  • Gzip / Brotli compression
  • HTTP/2 o HTTP/3 sul webserver
  • Lazy loading immagini (native loading="lazy")
  • Responsive images con srcset

Hai bisogno di aiuto?

Se vuoi un sito Drupal performante dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?