logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
03/10/2025, by Ivan

Cache max-age = dipendenza dal tempo

Cache max-age è simile alla direttiva HTTP max-age dell’intestazione Cache-Control.

Perché?

Il valore massimo di vita della cache fornisce un modo dichiarativo per creare cache che dipendono dal tempo.

Alcuni dati sono validi solo per un periodo di tempo limitato, in questo caso si desidera specificare l’età massima corrispondente. Tuttavia, nel core di Drupal 8 non abbiamo dati validi solo per un periodo limitato; di solito memorizziamo nella cache in modo permanente (vedi sotto) e ci affidiamo completamente ai tag di cache per l’invalidazione.

Cosa?

Il valore massimo di vita della cache è un numero intero positivo che rappresenta il numero di secondi.

Il max-age viene passato come un singolo intero, poiché un dato elemento della cache può logicamente avere solo un’età massima.

Esempi:

  • 60 significa cache per 60 secondi
  • 100 significa cache per 100 secondi
  • 0 significa cache per zero secondi, cioè non viene memorizzato
  • \Drupal\Core\Cache\Cache::PERMANENT significa che viene memorizzato per sempre, cioè verrà invalidato solo a causa dei tag di cache. (In altre parole: ∞ o infiniti secondi.)

Quindi, se per esempio vuoi impedire il caching di un blocco renderizzato, devi impostare max-age = 0.

Esempio per la maggior parte degli array di rendering:

$build['#cache']['max-age'] = 0;

Esempio in una funzione:

\Drupal::cache()->set('my_cache_item', $school_list, REQUEST_TIME + (86400));

Se vuoi modificare il max-age di un blocco a 0, devi implementare il metodo getCacheMaxAge.

Limitazioni del max-age

Sfortunatamente, max-age non funziona per gli utenti anonimi e il modulo Page Cache del core di Drupal. Per esempio, vedi questi problemi:

Finché questi (e forse altri) problemi non saranno risolti, tieni presente che impostare il max-age su un array di rendering incluso in una pagina non è sufficiente affinché gli utenti anonimi vedano una nuova versione dopo la scadenza del max-age. Nel frattempo, il modulo Cache Control Override cerca di mitigare i problemi. Potresti anche avere fortuna impostando un tag di cache personalizzato su pagine con contenuti dipendenti dal tempo, e invalidando questi tag manualmente con hook_cron(). Buona fortuna!