Je voudrais permettre aux pages de continuer à bénéficier du mécanisme de mise en cache de Drupal 8 pour les utilisateurs anonymes, à l'exception d'un bloc spécifique qui devrait être mis à jour à chaque actualisation de page en sachant qu'il est généré à partir de Views.
Est-ce techniquement possible? Comment?
Réponses:
Que montre ce bloc de vues?
D8 a des balises de cache et des contextes qui invalideront automatiquement le bloc si quelque chose change.
Donc, si vous avez une liste de nœuds, chaque fois qu'un nœud est ajouté ou mis à jour, ce bloc sera mis à jour, mais d'ici là, la version mise en cache est utilisée. Ce qui est bien mieux que de reconstruire sur chaque page.
Il fonctionne également avec le cache de pages, ces pages seront également mises à jour automatiquement.
Beaucoup, beaucoup de choses fonctionnent simplement avec la mise en cache prête à l'emploi, sans avoir besoin de configurations manuelles.
Modifier (répondre au commentaire):
Aléatoire avec le plugin de tri aléatoire? Cela devrait automatiquement marquer ce bloc comme non-cache. Cela n'affecte cependant pas le module de cache de pages. Il y a maintenant un nouveau module de cache de page dynamique / smartcache mais il ne sera que dans la prochaine bêta (ou RC!). Cela permettra éventuellement de mettre en cache le reste de la page et de simplement construire cette partie.
Mais un cas comme celui-ci est probablement mieux implémenté en utilisant du javascript. S'il n'y avait que quelques nœuds, vous pourriez tous les afficher, masqués par défaut et rendre l'un d'eux visible au hasard. Ou demandez une URL avec javascript qui renvoie une annonce aléatoire ou encore mieux visitez un aléatoire de N URL qui renvoient chacune une annonce (par exemple en renvoyant une liste d'URL puis en en choisissant une. Vous pouvez même le faire directement pour l'URL de l'image .
la source
S'il s'agit d'un bloc personnalisé, vous pouvez utiliser l' API de cache et définir l' âge maximal du cache sur 0, par exemple
S'il s'agit d'un bloc existant, vous pouvez le modifier pour l'ajouter au tableau de rendu.
la source