Waarom je de volledige Magento cache niet zomaar mag flushen

jul 15, 2021 | Blog

Waarom je de volledige Magento cache niet zomaar mag flushen

door | jul 15, 2021 | Blog | 0 Reacties

Leestijd: 6 minuten

Wat is een cache?

Eerst en vooral is het belangrijk om te begrijpen wat een cache is. Het doel van een cache is om tijdelijk data op te slaan. In het geval van Magento gaat het dan bijvoorbeeld om de informatie die op de server staat en die je frontend op de webshop te zien krijgt. De informatie die je frontend ziet op je webshop, wordt dus vaak opgevraagd uit de cache.

Die informatie staat altijd ergens op de server. De cache dient eigenlijk als een soort tussenstation tussen de server en je browser. Waarom zou je gebruikmaken van dat tussenstation en niet gewoon rechtstreeks de nieuwste info ophalen van de server? Eén reden: snelheid. Als de browser bij elke pagina moet communiceren met de server, is de laadtijd van de pagina’s erg hoog – en zal je veel bezoekers verliezen. Nu kan de browser telkens de informatie uit de cache opvragen, wat veel efficiënter is dan telkens communiceren met de server.

Magento is een groot, flexibel framework met véél mogelijkheden. Een erg flexibel en uitbreidbaar systeem gaat samen met complexe en zware bestanden. Een cache is in die situatie dus onmisbaar. 

Niet alleen Magento heeft een cache, maar ook je eigen browser. Die twee verschillende soorten caches noemen we ook server side cache en client side cache. Tussen de server en de informatie die je frontend ziet, zitten er dus twee tussenstations. server side cache in Magento, en de client side cache in de browser. Beide types caches slaan informatie op en zorgen zo voor kortere laadtijden. Het type caching dat wij gebruiken is altijd full-page server-side varnish caching.

Waarom moet ik soms de cache ‘flushen’ om aanpassingen te zien?

Als je aanpassingen doet in de backend van je Magento-shop, zal je die informatie niet altijd meteen in je browser te zien krijgen. Je browser haalt namelijk de informatie vanuit de cache, maar de cache zal de nieuwste aanpassingen vaak zelf nog niet hebben. Zo lang de informatie in de cache niet up-to-date is, zal de informatie in de browser dat ook niet zijn.

De oplossing? De cache flushen. Als je dat doet, haalt de cache de recentste informatie van de server. Als je browser dan de informatie van de cache opvraagt, zal je de nieuwste aanpassingen ook frontend te zien krijgen.

Als je regelmatig aanpassingen doet in de Magento backend, dan zal je de Cache Management-pagina wel kennen. Je ziet er een lijst met de verschillende cache types en de status van al die caches. Je hebt er de mogelijkheid om de caches individueel te flushen, of om de volledige cache in één keer te flushen.

Waarom flush ik dan niet gewoon de volledige cache na elke aanpassing?

Zoals eerder gezegd is snelheid de bestaansreden van de Magento cache. Als je niet correct met de cache omgaat, dan verlies je het volledige voordeel van de cache en zal je site merkbaar vertragen. Lastig voor jou dus, maar ook voor de bezoekers van je webshop.

De kans is groot dat je al eens het advies kreeg om niet de volledige cache te flushen (de grote oranje knop in de Magento-backend), maar wel de individuele cache types. Magento geeft namelijk zelf aan welke caches geflusht moeten worden na bepaalde aanpassingen. Die cache types kan je aanvinken en bovenaan op ‘submit’ klikken. Zo moet de cache geen overbodige informatie opvragen bij kleine aanpassingen.

Hoeveel snelheidsverschil maakt de cache? 

Waar cache het verschil maakt is de time to first byte. Dat is de tijd die het duurt voor het eerste element op de pagina is ingeladen. De rest van de laadtijd zal min of meer hetzelfde zijn met of zonder cache.

Maar voor die time to first byte maakt de cache een groot verschil. In Magento-shops duurt de time to first byte 1 tot 1,5 seconden. Voor een pagina die uit de cache geladen wordt, gaat het nog maar over een paar hondersten van een seconde!

Dat betekent dat het eerste element op je pagina 1 tot 1,5 seconden later begint te laden als je geen cache gebruikt! 

Let op: een pagina laadt pas uit de cache vanaf het tweede bezoek aan die pagina. Als je de cache flusht, moet er eerst iemand de pagina bezoeken, voor je als bezoeker van het snelheidsvoordeel geniet. 

 

Welke Magento caches in welke situaties?

Page cache: In deze cache zitten de volledige pagina’s die je frontend te zien krijgt. Dit is in het algemeen de cache die je als webshopbeheerder het vaakst moet flushen. De page cache omvat de volledige HTML-output van je pagina en vormt in feite een laag bovenop alle andere caches. Elke pagina op je webshop komt automatisch in deze cache terecht.

Configuration: In deze cache zitten je XML-bestanden. Die verschillende bestanden worden samengevoegd in de configuration cache. Als je aanpassingen doet aan bepaalde plugins, aan de configuratie in de backend etc., moet je deze cache flushen.

Layout: Configuratie van lay-out-bestanden. Hierin zit de structuur van de elementen op je webpagina’s. Enkel bij grondige aanpassingen, bijvoorbeeld aan de structuur van de containers, is het nodig om deze cache te flushen. In deze cache zit niet de HTML, wel de XML-configuratiebestanden. Bij aanpassingen aan HTML hoef je deze cache dus niet te flushen.

Blocks HTML output: Kleine stukjes code die op alle pagina’s terugkomen, zoals het navigatiemenu. Deze elementen zitten opgeslagen in .phtml-bestanden. Maar: het is niet zo dat je deze cache telkens moet flushen bij aanpassingen aan content blocks. Die content blocks zitten namelijk bijna nooit in een cache, en je browser zal die informatie rechtstreeks van de server krijgen.

Translation: Waarden van de woorden, zinnen, labels, etc. die in het systeem vertaald zijn. Dit zijn bijvoorbeeld knoppen als “aan winkelmandje toevoegen”.

EAV attributes cache: in deze cache zitten al je attributen met hun waardes per product.

En hoe zit het met die browser cache?

We vermeldden hierboven al eens de browser cache. Moet ik die dan niet flushen bij elke aanpassing?

Dat hangt af van situatie tot situatie. Voor aanpassingen aan de styling geven wij in Magento aan dat het CSS-bestand is veranderd. Zo weet de browser dat dit een nieuw bestand is, en haalt die automatisch de meest recente code op.

Bij bepaalde andere aanpassingen kan het wel gebeuren dat een lokale browser cache flush nodig is, zodat je browser meteen de nieuwste info ophaalt. Dat doe je door middel van een hard refresh met CTRL + F5. Op Mac kan je de Shift-knop ingedrukt houden en op de herlaad-knop te klikken. Wil je dit wat makkelijker maken? Dan kan je een browser cache-extensie downloaden, zoals Clear Cache voor Google Chrome.

Conclusie

In het algemeen kan Magento juist inschatten welke cache geflusht moet worden, en wordt dat bovenaan je scherm aangegeven (zie gele waarschuwing hierboven). Wel is het zeker nuttig om de basis te begrijpen wat de meeste caches doen en welke je soms nodig zal hebben.

Tot slot: als je verschillende aanpassingen doet, flush de nodige cache dan pas na al je aanpassingen, niet na elke aanpassing. En omdat we het niet genoeg kunnen herhalen: vermijd zo veel mogelijk een volledige cache flush.