Disabilita la cache per blocchi specifici


9

Vorrei che le pagine continuassero a beneficiare del meccanismo di memorizzazione nella cache di Drupal 8 per utenti anonimi, ad eccezione di blocchi specifici che dovrebbero aggiornarsi ad ogni aggiornamento della pagina sapendo che sono generati da Views.

È tecnicamente possibile? Come?


Come notato da MPD, utilizzare l'impostazione di età massima. Inoltre puoi farlo tramite l'interfaccia utente anche sul modulo di modifica dei blocchi.

Anch'io ho questo problema - è fastidioso che Drupal non lo affronti automaticamente. La memorizzazione nella cache è buona, ma Drupal dovrebbe essere destinato a siti Web dinamici ...
James

Risposte:


1

Che cosa mostra quel blocco di visualizzazioni?

D8 ha tag di cache e contesti che invalideranno automaticamente il blocco se qualcosa cambia.

Pertanto, se si dispone di un elenco di nodi, ogni volta che un nodo viene aggiunto o aggiornato, quel blocco verrà aggiornato, ma fino ad allora verrà utilizzata la versione memorizzata nella cache. Il che è molto meglio della ricostruzione su ogni pagina.

Funziona anche con la cache delle pagine, anche quelle pagine verranno aggiornate automaticamente.

Molte, molte cose funzionano semplicemente con la memorizzazione nella cache, senza la necessità di configurazioni manuali.

Modifica (rispondendo al commento):

Casuale con il plugin di ordinamento casuale? Ciò dovrebbe contrassegnare automaticamente quel blocco come non memorizzabile nella cache. Ciò tuttavia non influisce sul modulo della cache della pagina. Ora c'è un nuovo modulo cache di pagina smartcache / dinamico ma sarà solo nella prossima beta (o RC!). Ciò consentirà infine di memorizzare nella cache il resto della pagina e di creare semplicemente quella parte.

Ma un caso come questo è probabilmente meglio implementato usando alcuni javascript. Se ci fossero solo pochi nodi, potresti visualizzarli tutti, nascosti per impostazione predefinita e renderli visibili casualmente. Oppure richiedi un URL con javascript che restituisca un annuncio casuale o anche meglio visitare un N casuale di entrambi gli URL che restituiscono un annuncio (ad esempio restituendo un elenco di URL e quindi selezionandone uno. Puoi persino farlo direttamente per l'URL dell'immagine .


Le viste restituiscono un nodo casuale per variare il blocco annunci.
Amine,

Aspetterò la prossima versione per la soluzione pulita, quindi :)
Amine,

Sì, il random proviene dal plug-in Views Random Sort. Sono d'accordo, è possibile generare un contenuto di blocco javascript che inserisce in un elenco le entità e quindi decide a livello di browser con alcune funzioni casuali o circolari di selezionarne e accodarne una. Tuttavia, avrò più di un blocco come questo in alcune pagine e una soluzione lato server si adatterà al meglio.
Amine,

10

Se si tratta di un blocco personalizzato, è possibile utilizzare l' API della cache e impostare la durata massima della cache su 0, ad es

$build = [
 // ...
 '#cache' => [
   'max-age' => 0,
 ],
];

Se è un blocco esistente, è possibile modificarlo per aggiungerlo all'array di rendering.


Come spiegato nella domanda, il mio blocco è un blocco Views. Penso che sia troppo complicato interferire con il livello php / module.
Amine,

1
Sfortunatamente, questo non funziona comunque (provato). Sembra che la pagina sia consegnata da pagecache e contenga il blocco obsoleto. Ma sto ancora indagando.
Rainer Feike,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.