Dynamic Page Cache: la novità di Drupal 8

Tempo di lettura: 3 minuti Skills Updated: Drupal VELOCIZZIAMO IL NOSTRO SITO DRUPAL 8! Da oggi abbiamo una nuova possibilità per rendere le nostre pagine web e quindi i nostri siti più veloci, si chiama Dynamic Page Cache ed è un modulo fornito nel core di Drupal 8. Dynamic Page Cache memorizza le pagine la prima volta che vengono richieste escludendo gli elementi personalizzati. Avendo le pagine in cache una scadenza non configurabile nel pannello di amministrazione, si può affermare che potenzialmente esse abbiano una vita infinita, o meglio, fino allo svuotamento della cache di Drupal che le invalida oppure per invalidazione programmatica di determinati tag o max-age associati alla cache. Questo modulo è consigliato per qualsiasi tipo di sito: sia esso di piccole, medie o grandi dimensioni. CONFIGURAZIONE Dynamic Page Cache ha anche il vantaggio di non richiedere alcuna configurazione! Questo perchè il modulo si serve dei “cacheability metadata” forniti dalle API di Drupal 8, che sostanzialmente hanno a 3 proprietà: - Cache tags: per i dati gestiti da Drupal come Configurazioni o Entità - Cache contexts: per delle varianti che dipendono dal contesto della richiesta - Cache max-age: per impostare un tempo di validità della cache Grazie a queste proprietà il modulo può memorizzare la cache cercando di rilevare le parti altamente dinamiche restituendole più tardi: ecco l' “Auto-placeholdering”. L’Auto-placeholdering viene eseguito in base alle condizioni specificate nel parametro renderer.config : auto_placeholder_conditions del file service.yml. Per modificare i settaggi presenti nel file service.yml al parametro renderer.config : required_cache_contexts:
UN PAIO DI ESEMPI PRATICI Una volta che imposteremo le regole generali di cache del sito potremo, passo dopo passo, impostare nel dettaglio le singole regole dei componenti che svilupperemo. Ad esempio se creiamo una rotta o un blocco custom ci basterà costruire l’array di render specificando i cacheability metadata che, ripetendo, si dividono in: cache tags, cache contexts e cache max-age. Di seguito alcuni esempi di array di render: $render[] = array( '#markup' => '
', '#cache' => [ 'contexts' => ['url.path'], ], ); $render[] = array( '#markup' => '
', '#cache' => [ 'max-age' => 0 ], ); $render[] = array( '#markup' => '
', '#cache' => [ 'tags' => [ ‘custom_tag:1’, ] ], ); È importante però in fasi di sviluppo, una volta testati i comportamenti di cache delle pagine, avere la possibilità di disattivare Dynamic Page Cache in modo da non rallentare le fasi di lavoro. Questo è possibile scrivendo la seguente stringa nel file settings.php: $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; CONCLUSIONI Si possono inoltre creare dei Context Custom e gestire l’invalidazione dei tag in modo programmatico cosi da sperimentare logiche ancora più personalizzate di gestione della cache, ma questo lo vedremo in un prossimo articolo.
Realizziamo qualcosa di straordinario insieme!
Siamo consulenti prima che partner, scrivici per sapere quale soluzione si adatta meglio alle tue esigenze. Potremo trovare insieme la soluzione migliore per dare vita ai tuoi progetti.