logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll
03/10/2025, by Ivan

Cache max-age = tijdsafhankelijke afhankelijkheden

Cache max-age is vergelijkbaar met de HTTP-directive max-age van de Cache-Control header.

Waarom?

Cache max-age biedt een declaratieve manier om tijdsafhankelijke caches te maken.

Sommige gegevens zijn slechts gedurende een beperkte periode geldig, en in dat geval wil je een overeenkomstige maximale leeftijd opgeven. In het geval van Drupal 8 core hebben we echter geen gegevens die slechts tijdelijk geldig zijn; we cachen meestal permanent (zie hieronder) en vertrouwen volledig op cache tags voor invalidatie.

Wat?

Cache max-age is een positief geheel getal dat het aantal seconden uitdrukt.

Cache max-age wordt doorgegeven als een enkel geheel getal, omdat een bepaald cache-item logisch gezien slechts één maximale leeftijd kan hebben.

Voorbeelden:

  • 60 betekent cachen gedurende 60 seconden
  • 100 betekent cachen gedurende 100 seconden
  • 0 betekent cachen voor nul seconden, d.w.z. helemaal niet cachen
  • \Drupal\Core\Cache\Cache::PERMANENT betekent dat het voor altijd gecachet wordt, dus enkel ooit ongeldig gemaakt door cache tags. (Met andere woorden: ∞ of oneindig aantal seconden.)

Dus, als je bijvoorbeeld wilt voorkomen dat een gerenderd blok wordt gecachet, moet je max-age = 0 instellen.

Voorbeeld voor de meeste render arrays:

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

Voorbeeld in een functie:

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

Als je de max-age van een blok op 0 wilt zetten, moet je de methode getCacheMaxAge implementeren.

Beperkingen van max-age

Helaas werkt max-age niet voor anonieme gebruikers en de Page Cache module van Drupal core. Zie bijvoorbeeld deze issues:

Totdat deze (en mogelijk andere) problemen zijn opgelost, moet je er rekening mee houden dat het instellen van een max-age voor een render array die in een pagina is opgenomen, onvoldoende is om anonieme gebruikers een nieuwe versie te laten zien nadat de max-age verlopen is. Ondertussen probeert de contrib module Cache Control Override de problemen te verhelpen. Je zou ook geluk kunnen hebben door een eigen cache tag in te stellen op pagina’s met tijdsafhankelijke inhoud en deze tags handmatig ongeldig te maken via hook_cron(). Succes!