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.

 

Dynamic Page Cache

 

Per modificare i settaggi presenti nel file service.yml al parametro renderer.config : required_cache_contexts

Dynamic Page Cache 2



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' => '<div>Hello !</div>',
      '#cache' => [
        'contexts' => ['url.path'],
      ],
    );


$render[] = array(
      '#markup' => '<div>Hello !</div>',
      '#cache' => [
        'max-age' => 0
      ],
    );

$render[] = array(
      '#markup' => '<div>Hello !</div>',
      '#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.



Per ora...Buon Divertimento!

 

 

RESTA AGGIORNATO, ISCRIVITI ALLA NOSTRA NEWSLETTER

 

 

 

 

 

Francesco Tuzzolino