De snelheid van je website is cruciaal voor de gebruikerservaring. Daarom is het belangrijk om je resources, zoals het RAM-geheugen, de schijftoegang, de CPU en het netwerk, zo min mogelijk te belasten.
Er bestaat een slimme manier om je server en je netwerk zo efficiënt mogelijk te gebruiken en de snelheid van je website op peil te houden: caching.
Caching is het tijdelijk opslaan van gegevens om sneller toegang te hebben tot deze gegevens. Door tijdelijke kopieën van een website te bewaren, hoeft de computer de gegevens niet opnieuw te genereren. Hierdoor is de website sneller.
Het doel van caching is om websites en webapplicaties sneller te laden. Snelle laadtijden en een optimale gebruikerservaring zijn dan ook de belangrijkste voordelen.
Doordat er minder resources gebruikt worden, zal je website stabieler zijn bij grote bezoekerspieken.
Een snellere website draagt ook bij aan de SEO (Search Engine Optimization) van je website.
Waarom is caching zoveel sneller?
Wanneer een bezoeker je website wil bezoeken, wordt er via het internet een verzoek gestuurd naar je server om de inhoud van de pagina weer te geven. Dit verzoek moet verwerkt worden en zorgt voor een zekere belasting op het RAM-geheugen, de schijftoegang, de CPU en het netwerk. Dat geeft aanleiding tot vertraging bij het terugsturen van de inhoud.
Caching beperkt deze vertraging door gegevens die veel worden opgevraagd tijdelijk op een andere plaats en in een vereenvoudigde structuur op te slaan. Doordat deze gegevens apart worden bewaard, hoeven ze niet meer opgevraagd te worden bij de server wanneer de website opnieuw wordt geopend. Zo wordt de pagina veel sneller getoond.
De kopie van je website die in de cache is opgeslagen wordt niet automatisch aangepast als je website wijzigt. Daardoor bestaat de kans dat je bezoeker verouderde webpagina’s te zien krijgt. Dat is vooral een probleem als de content van je website vaak en snel wijzigt, bv. bij nieuwswebsites.
De gecachte kopie is sowieso beperkt geldig. Deze cache-tijd kan je meestal zelf instellen. Hoe vaker je website wijzigt, hoe korter je hem in cache wil laten staan. Wanneer de cache-tijd verstreken is, zal de applicatie de gegevens opnieuw bij de server moeten opvragen.
Wanneer de brongegevens wijzigen terwijl ze nog in cache zitten, moet de applicatie de relevante cache-items zelf verwijderen. Meestal gebeurt dit in de logica die uitgevoerd wordt bij het toevoegen, verwijderen of wijzigen van brongegevens. De applicatie gaat dan op zoek naar de juiste plek in de cache om de items in kwestie te verwijderen.
Deze expliciete actie verhindert dat websites of applicaties verouderde output weergeven.
In principe kan je elke vorm van gegevens cachen. Maar om de cache te laten renderen en extra complexiteit te vermijden, gebruik je caching om gegevens op te slaan die erg resource-intensief zijn om te berekenen:
Concreet gaat het meestal over:
Alle computersystemen cachen automatisch gegevens. Zelfs wanneer je bestanden vanop de harde schijf laadt, zal het besturingssysteem delen van het bestand in het RAM-geheugen bijhouden. Databasesystemen doen hetzelfde. Helaas kent het besturingssysteem niet de context van je applicatie en zijn gespecialiseerde cachingsystemen vereist om het gewenste resultaat te bekomen.
Combell biedt volgende cachingsystemen aan:
Een HTTP-cache die volledige pagina’s in cache opslaat. Werkt out-of-the-box voor statische webpagina’s. De geïntegreerde VCL-programmeertaal biedt de mogelijkheid om regels te definiëren hoe dynamische en gepersonaliseerde pagina’s gecachet kunnen worden. Combell biedt Varnish configuratietemplates aan voor populaire platformen zoals WordPress, Drupal en Magento.
Meer weten over VarnishEen gedistribueerde key-value store die gebruikt kan worden om tijdelijke gegevens op te slaan. Is gekend voor z’n snelheid en flexibiliteit en dient vanuit de applicatie aangesproken te worden. Platformen zoals WordPress, Drupal en Magento bieden integratiemogelijkheden voor Redis voor het bijhouden van dynamische gegevens.
Meer weten over RedisEen geïntegreerde cache die PHP-bestanden inleest, compileert en als machinecode in het geheugen bijhoudt. Standaard geactiveerd bij je Combell webhostingpakket, dus geen technische kennis vereist. Verbetert de algemene prestaties van je PHP-code meteen, maar heeft slechts een indirect invloed op de laadtijden van pagina’s.
Een lokale key-value store die deel uitmaakt van je PHP-installatie. Standaard geactiveerd bij je Combell hosting pakket. Biedt eveneens integratiemogelijkheden met de meest courante frameworks en CMS’en. Vergelijkbaar met Redis, maar met minder features.
Elk type cache heeft specifieke doelstellingen. Het heeft geen zin om alle caches tegelijk te activeren. Dat geeft geen garantie op betere resultaten en vergroot de complexiteit.
Selecteer het juiste type cache
Activeer dan OPcache. Bij Combell staat OPcache standaard geactiveerd voor onze klanten op onze webhosting.
Het is aangeraden om zoveel mogelijk complete webpagina’s te cachen. Hiervoor gebruik je best Varnish. Pagina’s die statisch zijn of minimale personalisatie hebben, kunnen heel eenvoudig via Varnish gecachet worden. Varnish heeft eveneens heel wat integratiemogelijkheden met CMS’en en frameworks.
Varnish heeft ook een geïntegreerde programmeertaal die gebruikt kan worden om te bepalen wat er wel of niet gecachet wordt.
Sommige pagina’s kunnen niet in hun geheel gecachet worden omdat ze gepersonaliseerde informatie weergeven. Denk bv. aan de online winkelkar of het check-out proces van een e-commerce website. Die pagina’s zijn uniek per bezoeker. Sommige gegevens van deze pagina’s kunnen wel in de cache worden bijgehouden, waardoor de database of het bestandssysteem ontlast wordt.
Wil je bv. gegevens ophalen uit een databank, een bestand op de schijf of via een webservice? Activeer dan Redis of APCu.
Worden de gegevens enkel door PHP gebruikt?
Dan volstaat APCu. De applicatiecode wordt dan nog steeds uitgevoerd, maar de toegang tot bepaalde gegevens wordt gecachet.
Hebben andere systemen ook toegang nodig tot de gecachete gegevens?
Dan is Redis de beste cachingtechnologie. Redis bevat geavanceerde datatypes, meer instructies en zelfs de mogelijkheid om het gedrag te scripten via LUA-scripts.
Afhankelijk van je CMS of framework, kunnen er kant-en-klare integratiemogelijkheden zijn voor Redis of OPcache.
Caches combineren is mogelijk, maar zorg dat je niet te veel cachet. Je loopt dan het risico om verouderde data weer te geven. Maak de caches zeker leeg wanneer de brondata aangepast wordt.
Elk cachingsysteem kan bepalen hoelang items in de cache bewaard moeten worden en biedt de mogelijkheid om items te verwijderen uit de cache.
Combell is al jaren actief in het streven naar snelle laadtijden en een optimale gebruikerservaring door middel van caching. Samen met jou zoeken we naar de beste oplossing voor jouw website of applicatie. Onze ervaren specialisten staan in voor het selecteren en implementeren van de beste caching.