Caching: zaken die van belang zijn

Caching is een verzameling technieken om de snelheid van websites te optimaliseren. Caching biedt het nodige, maar vraagt ook het nodige. En dus is een gedegen voorbereiding noodzakelijk.

Binnen WordPress begint het met de keuze van een zogenaamde plugin. Op voorhand weet de gebruiker doorgaans niet welke impact de plugin heeft op het gebruik van de geheugencapaciteit. Dat is ook sterk afhankelijk van de grootte van de website. Ook is niet bekend welke variabelen wel of niet ingesteld kunnen worden en wat er precies noodzakelijk is.

Voorbeelden

wp-rocketIn het segment gratis is voor W3 Total Cache erg bekend. Deze plugin lijkt echter nauwelijks meer actief te worden onderhouden. Daarnaast is de plugin duizelingwekkend voor een doorsnee WordPress gebruiker. De meeste instellingen vergen een enorme deskundigheid. Zonder die deskundigheid is het effect op voorhand niet duidelijk. Er zijn meer gratis varianten, die doorgaans wat eenvoudiger in te stellen zijn. WP Super Cache is een te overwegen voorbeeld. Deze plugin is actueel en wordt actief onderhouden en kent ruim 9,2 miljoen gebruikers. Voor WP Rocket moet betaald worden. De basisversie voor één website kost 39 dollar. Voor die prijs krijgt de gebruiker één jaar support en updates.

Wat doet een caching plugin met je WordPress installatie?

De meeste caching plugins passen op zijn minst twee configuratiebestanden aan. De eerste is .htaccess, daarmee worden een aantal variabelen gedefinieerd die het gedrag van de webserver beïnvloeden. Het tweede bestand is wp-config.php, de instellingen in dat bestand bepalen in hoofdzaak het gedrag van WordPress. Daarnaast maken caching plugins mappen aan die meestal geplaatst worden in wp-content/uploads of wp-content/cache. De wijze waarop mappen en later daarbinnen bestanden worden aangemaakt verschilt per plugin. Ook de grootte van de website (aantallen artikelen en pagina’s) hebben invloed op de grootte en hoeveelheid (tijdelijke) bestanden die in uploads worden aangemaakt. Caching is een techniek waarbij dynamische pagina’s vanuit de database (dus vanaf de schijf van de server) worden ‘omgezet’ naar statische HTML pagina’s. Caching ‘voorkomt’ dus toegang tot de database en de verwerking van de database via PHP om steeds opnieuw HTML te maken en naar de browser te sturen. De gereed zijnde HTML pagina’s worden ‘rechtstreeks’ vanuit de aangemaakt bestanden geupload naar de webbrowser van de gebruiker.

CSS en JavaScript

Caching plugins optimalseren ook het gebruik van zowel CSS als JavaScript bestanden. Dat wordt doorgaans op twee manieren gedaan. Ten eerste worden de bestanden die nodig zijn in een pagina zoveel mogelijk ‘on-the’fly’ samengevoegd en dan als samengesteld bestand bewaard. Zo wordt dan voorkomen dat tijdens de opbouw van de HTML pagina meerdere keren een verzoek aan de server hoeft te worden gedaan om bestanden op te halen. Met minimaal één CSS en één JavaScript bestand wordt de inhoudsweergave naast statische HTML pagina’s versneld. Ten tweede worden alle overbodige karakters uit beide bestanden verwijderd zoals spaties, commentaarregels en harde returns. Daarmee wordt het bestand aanzienlijk kleiner en helpt dus ook bij de versnelling van de verwerking. Het gebruik van plugins kan invloed hebben op de hoeveelheid CSS en JavaScript die wordt gebruikt bij het tonen van een pagina. En dus invloed op de snelheid.

Let bij plugin keuzes op eventueel overmatig gebruik van CSS en JavaScript, zoek indien nodig een ‘lichter’ alternatief

Geheugenruimte

Het is dus van belang een inschatting te kunnen maken over het extra geheugengebruik op de schijf van de webserver. Bij een WordPress website met een actieve weblog van enige jaren oud, kan dit dus een forse hoeveelheid geheugen vragen. Sommige plugins bieden de mogelijkheid aan te geven wat er wel en wat er niet gecached hoeft te worden. Het is dan raadzaam alle gewone pagina’s in ieder geval wel te chachen. Van een weblog kan men dan bijvoorbeeld kiezen voor het huidige jaar en eventueel het voorgaande jaar. Informeer bij de provider hoeveel schijfgeheugen beschikbaar is voor de extra ruimte die de cache plugin voor de data nodig heeft. De beelden die in berichten en/of pagina’s worden gebruikt worden niet gecached, deze staan immers niet in de database, maar in de uploads map van de installatie.

Uiteraard is op voorhand wel een goed beleid ten aanzien van de toe te passen beeldgroottes noodzakelijk

Meten van het effect

Het is natuurlijk interessant te kunnen meten wat het effect is van de geïnstalleerde caching plugin. Er zijn drie belangrijk referenties, die elk zo hun eigen gegevens leveren:

  • Google PageSpeed (test vanuit de USA)
  • GTMetrix (test standaard vanuit Vancouver – Canada, in Europa kan London worden ingesteld)
  • Pingdom (testlokatie zelf in te stellen)

Kijk bij de metingen vooral naar de lokatie waar de test wordt gedaan. Een test in ons land kan aanzienlijk betere resultaten tonen dan een test die vanuit de Verenigde Staten wordt gedaan

pingdomAlle metingen worden voorzien van adviezen, die doorgaans verder gaan dan hetgeen een gewone gebruiker na installatie van een plugin kan doen. Technieken die dan bijvoorbeeld genoemd worden zijn het ‘verplaatsen’ van bijvoorbeeld JavaScript nodig naar de ‘onderzijde’ van de code, zodat de laadtijd van hetgeen meteen zichtbaar moet zijn wordt verkleind. technieken als ‘above the fold’ en ‘below the fold’. Het zijn twee al oude termen, die ook in de krantenwereld werden gebruikt om belangrijke content ‘boven de vouw’ van de krant te plaatsen. Met andere woorden, inhoud die meteen zichtbaar moet zijn. Binnen webtechnieken wordt die term ook gehanteerd om code die niet meteen nodig is ‘below the fold’ te laten laden. Het maakt dus wel degelijk uit op welke wijze de HTML van begin tot eind wordt samengesteld in de snelheid van de weergave ten opzichte van de techniek die nodig is voor de rest van de pagina. Bij mobiele weergave is dit nog kritischer. Om de resultaten in snelheid te beïnvloeden is behoorlijk wat inhoudelijke technische kennis nodig, mede afhankelijk van de plugin mogelijkheden.