Op 22 en 23 mei 2025 kwam de Varnish Taskforce bijeen voor twee volledige dagen van intensieve technische sessies over de integratie van Varnish Cache en Magento 2. Het evenement, georganiseerd door elgentos en gehost bij Phpro (Xplore Group), bracht een groep Magento-ontwikkelaars, Varnish-experts, devops-engineers en hostingprofessionals samen met een gezamenlijke missie: het verbeteren van de Varnish-integratie en de VCL voor Magento 2.
Op donderdagochtend begonnen we met een overzicht van Thijs Feryn om snel bij te praten over wat de ingebouwde Varnish VCL doet, gevolgd door een toelichting op Varnish' Finite State Machine.
Hierna namen we een geoptimaliseerde VCL regel voor regel door — samengesteld uit verschillende Github PR's — om verbeterpunten te bespreken. Deze verbeteringen werden omgezet naar taken.
Na een heerlijke lunch verzorgd door Phpro (dank daarvoor!) gingen de individuele ontwikkelaars 's middags direct met deze taken aan de slag. Geen vage theorieën—maar echt coderen, configuratie-tweaks en high-throughput prestatie-tests.
Op de tweede dag kwamen we weer samen en richtten we ons op het toevoegen van de Magento 2-logica. Dit deden we door het ontwikkelen van de elgentos/magento2-varnish-extended extensie, waarin alle logica zit om een dynamisch VCL-bestand te genereren via verschillende nieuwe configuratievelden in de backend. Het doel is om deze code via een Magento 2 en een Mage-OS pull request te integreren, zodat deze functionaliteit in de hoofdcodebasis komt.
Een kort overzicht:
- Ons doel is het VCL-bestand kleiner te maken zodat het overzichtelijker wordt en zoveel mogelijk kan terugvallen op de ingebouwde VCL
- Delen van de VCL die over oude kwetsbaarheden gaan (zoals Httpoxy), oude technieken (zoals X-Pool voor Capistrano) of oude headers (zoals Pragma) zijn verwijderd
- Delen van de VCL die verantwoordelijkheden oppakken die eigenlijk bij de host of ontwikkelaar liggen (zoals passes configureren via URL's), zijn verwijderd
- De health probe blijft actief omdat we die gebruiken om de lagere grace periode op een gezonde backend in te stellen
- We hebben de standaard grace periode voor backend-responses verkort van 3 dagen naar 1 dag
- We gaan ervan uit dat de Xkey vmod geïnstalleerd is zodat we soft-purging kunnen inschakelen
- Debuggen van Varnish via de frontend wordt ontmoedigd door publieke headers te verwijderen, met uitzondering van de X-Magento-Cache-Debug header (voor historische hit-ratio tracking via RUM data)
- We hebben een nieuwe VCL-generator gebouwd met uitgebreide templatefuncties (if/else en foreach-syntaxis)
- We hebben het varnish:vcl:generate-commando uitgebreid zodat het met waarden uit de database kan werken, en meer parameters toegevoegd
- Er zijn meer commentaren aan het VCL-bestand toegevoegd zodat ontwikkelaars onze keuzes beter begrijpen
- We hebben diverse tests in Varnish Testing Language (VTL) opgezet om de VCL te testen
- Cache-purges via Ctrl-Shift-R of Cmd-Shift-R worden nu toegestaan voor IP's in de purge ACL-lijst
- Na het legen van de cache wordt er een adminnotificatie in Magento getoond met het aantal gepurge objecten
- Er zijn meer configuratie-opties toegevoegd in de backend voor meer controle over de gegenereerde VCLMarketingparameters zijn configureerbaar gemaakt (met waarschuwingen voor mogelijke misconfiguratie)In-/uitschakelen van back/forward-cache (standaard aan)In-/uitschakelen van caching van statische bestanden in Varnish (standaard aan)In-/uitschakelen van caching van mediabestanden in Varnish (standaard aan)In-/uitschakelen van Xkey-ondersteuning in Varnish (standaard aan)Keuze tussen softpurge en hardpurge via Xkey (standaard softpurge)Mogelijkheid om requests op basis van gevonden cookies door te laten (bijv. t.b.v. Xdebug of headless CMS-previews)
Wat deze dagen bijzonder maakte was niet alleen de technische diepgang, maar ook de samenwerkingsenergie: iedereen kwam met scherpe vragen, goede antwoorden en uiteindelijk stond er een veel betere VCL dan voorheen, met nog veel meer verbeteringen in de pijplijn voor de Varnish-implementatie in Magento.
Dank aan alle aanwezigen:
- Thijs Feryn (Varnish)
- Jeroen Vermeulen (DeoVero)
- Maxim Ganses (Phpro)
- Jeroen Boersma (Hyvä)
- Peter Jaap Blaakmeer (elgentos)
- Toon van Dooren (Savvii)
- Timon de Groot (Hypernode)
- Marvin Sanders (Hypernode)
- Pieter Hoste (Baldwin)
- Bert de Knijf (Hosted Power)
- Alexey Parfenov (Hosted Power)
- Danny Verkade (Cream)