Wat is caching? Normaal wordt een pagina in Joomla elke keer dat je die opvraagt opgebouwd. De inhoud van de artikelen en de modules wordt vanuit de database opgehaald en in de template geplaatst. Bij caching worden (delen van) webpagina's niet meer opgebouwd vanuit de database, maar wordt de weergave opgeslagen en opnieuw getoond (tot een configeerbaar aantal minuten / uren voorbij is). Dat versnelt de website aanzienlijk, maar heeft ook tot gevolg dat wijzigingen in de backend niet direct zichtbaar zijn aan de voorkant. Tenzij je bovenop het nieuws zit (bv nu.nl) is dat vaak geen probleem. Cache is trouwens niet actief voor ingelogde gebruikers (frontend en backend).

Je kunt caching op meerdere niveau's activeren, en hoe meer je cached, hoe groter de kans dat er toch kleine of grotere problemen ontstaan. Dat kan van alles zijn: statische pagina's hebben meestal geen last, maar dynamische zaken wel, bijvoorbeeld captcha's, winkelmandjes van webshops, kruimelpad, enzovoorts.

Dit is de reden dat Joomla wordt geïnstalleerd zonder caching. Je kunt er zelf voor kiezen om caching aan te zetten. dat kan op meerdere niveau's: per Component, per Module of zelfs per complete webpagina. Standaard wordt de opgeslagen weergave bewaard als een bestandje in de /cache/ folder. Als je in de map kijkt zie je de verschillende modules en componenten er al snel tussen staan:

je ziet hier com_* voor component views, mod_* voor module views en page voor volledige pagina's. Als je met een editor zo'n bestand opent herken je gewoon je content. Er zit alleen een regel in zodat ze niet buiten Joomla geladen kunnen worden.

Algemene Instellingen - Systeem tab - Cache Instellingen

Deze instelling controleert in 1 keer het cachen van zowel de component en de modules. Er zijn 3 mogelijkheden:

0 - Uit
1- Conservatieve caching
2- Progressieve caching

Progressieve caching kan nog wel eens problemen veroorzaken, dus het beste is om hier de conservatieve optie te gebruiken. Daarmee activeer je caching voor je componenten en modules. Met deze instelling kun je per module later de cache-instelling overschrijven, met progressieve caching kan at niet, dat maakt een weergave van de gecombineerde modules.

De Cache Afhandeling kun je standaard alleen op "File" zetten. Joomla ondersteunt op zich meer opties (zoals mem-cache), maar daarvoor moet je direct je configuration.php bestand aanpassen, dit is echt voor gevorderde gebruikers. Wat je wel kunt aanpassen is de Cache Tijd. Default is 15 minuten, maar als je een hele statische website hebt mag je deze best een flink stuk hoger zetten.

Platform specific caching

Een nieuwe optie die is toegevoegd in Joomla 3.5 is Platform specifieke caching. Als je cache uitstaat is deze optie verborgen, maar als het aan staat verschijnt hij:

Gebruik deze optie als je device-specifieke content aanbiedt. Misschien zijn er bepaalde modules die je aleen maar laadt (niet verbergt met CSS) op niet-mobiele devices. Deze optie voorkomt dan dat mobiele gebruikers per ongeluk de gecachte desktopversie te zien krijgen. De meeste gebuikers doen dit niet en hebben deze optie dan ook niet nodig.

Module caching

Als je in de Algemene Instellingen caching op conservatief hebt gezet kun je hier per module van afwijken. Je kunt het echter alleen maar uitzetten. Als je globaal caching uit hebt staan kun je het niet voor een bepaalde module wel activeren. Ook kun je hier kiezen voor een andere Cache Tijd. Als je trouwens de Systeem - Paginacache plugin ook gebruikt werkt het instellen van individuele modules vaak minder goed.

Systeem - Paginacache plugin

De Systeem - Paginacache plugin schakelt een behoorlijk agressieve vorm van caching in. Er worden dan namelijk weergaves van de hele pagina gemaakt. Bij pagina's met interactieve onderdelen moet je daarom goed testen of het allemaal nog goed werkt. Vaak gaat het prima, maar eerst checken...

Aanzetten is eenvoudig: Ga naar het Pluginbeheer en zoek de Systeem - Paginacache plugin op, en Publiceer deze. Er is maar 1 optie in te stellen (Activeer browser caching), maar die optie veroorzaakt meer problemen dan dat hij winst oplevert, dus laat die uit staan.

Cache opschonen

Zo nu en dan zal het nodig zijn de cache op te schonen. Als je bijvoorbeeld in de backend bezig bent met een artikel wil je graag direct zien hoe het er aan de voorkant uitziet, en niet 15 minuten wachten. Om dat te doen moet je het volgende riedeltje doorlopen:

  • Artikel opslaan.
  • Ga naar Systeem - Wis Cache
  • Selecteer alle bestanden die je daar ziet en klik op Verwijderen
  • Ga eventueel naar Opschonen verlopen cache en verwijder die ook
  • Ga weer naar je artikel voor verdere bewerking

Als je met een lang artikel bezig bent is dit nogal bewerkelijk. Gelukkig is hier een mooie oplossing voor bedacht, de Cache Cleaner van NoNumber. Je krijgt dan een klein linkje helemaal onderin je backend, waarmee je makkelijk de cache kunt opschonen, ook als je gewoon in een artikel zit. Je kunt het in de Pro-versie zelfs zo instellen dat elke keer als je iets opslaat de cache wordt geleegd, dan heb je er helemaal geen omkijken meer naar. het kan zelfs cache van andere partijen opschonen, zoals je CDN, Siteground cache, of die van Jotcache!  

Memcache voor gevorderden

Gevorderde gebruikers kunnen ook memcaching activeren als hun webserver het ondersteund (Siteground wel). Het versnelt database calls, API calls en pagina rendering door objecten op te slaan in de server RAM. Je hebt daarvoor eerst de volgende informatie van je server nodig: het locale IP-adres (meestal localhost of 127.0.0.1) en de memcache poort (5 nummers meestal). Met deze informatie moet je dan handmatig je configuration.php bestand aanpassen, er zijn geen opties voor in het Joomla menu:

PHP version lager dan 7:

public $caching = '2';
public $cache_handler = 'memcache';
public $memcache_server_host = 'localhost';
public $memcache_server_port = 'xxxxxx';

PHP version 7 en hoger (let op de extra "d"):

public $caching = '2';
public $cache_handler = 'memcached';
public $memcache_server_host = 'localhost';
public $memcached_server_port = 'xxxxxx';

Zorg wel dat je checked of je site daarna goed werkt, soms zijn er issues, of conflicten met je extensies. Meestal gaat het goed, en is je site weer een stuk sneller.

Joomla extensies voor Caching

Voor specifieke doeleinden zijn er meerdere cache-extensies in de Joomla Extension Directory. Hier zitten behoorlijk geavanceerde bij, zoals JotCache. Daarmee kun je zeer gedetailleerd je cache instellen, maar ook delen van je site uitsluiten (bijvoorbeeld een module positie) of een bepaalde browser. Ook Victor Vogel heeft er recent een plugin voor gebouwd: PCE - Page Cache Extended.