Wat is Varnish en wat heb ik er aan?
![Wat is varnish](https://www.combell.com/nl/blog/files/Wat-is-varnish.jpg)
Varnish is niet enkel de Engelse term voor vernis, het is ook een tool om uw website supersnel te maken en een standaard stuk software in onze geavanceerde managed hosting (managed services). Wat is Varnish dan, vraagt u zich af?
Wat is Varnish?
De Varnish die wij bedoelen noemt zichzelf een ‘Web Application Accelerator’, en indien goed ingesteld is het dat inderdaad. Maar het doet ook nog veel meer: het is een load balancer, een reverse proxy en een website cache in één..
Varnish kan u installeren op uw webserver of een aparte server. Het vervangt de poort waarop u nu uw webserver zou actief hebben (standaard poort :80) en zal alle HTTP verzoeken voortaan zelf ontvangen. Eens een verzoek ontvangen is zal het de pagina uit een cache teruggeven of het verzoek doorspelen naar de echte webserver die op een andere poort (of andere server) draait. Dat antwoord van de webserver kan dan opgeslagen worden in de cache zodat het bij het volgende bezoek direct gebruikt kan worden.
Bekijk onze video-tutorial: Maak jouw website vliegensvlug met caching
Wat heb ik er aan?
Als u een webpagina heeft of maakt waarvan u weet dat het populair kan worden met vele bezoekers is het zeker interessant Varnish te betrekken bij uw ontwikkeling. Neem bijvoorbeeld een standaard LAMP (Linux, Apache, MySQL en PHP) omgeving waar heel wat websites en applicaties in gemaakt worden. Telkens er iemand een pagina opvraagt komt dat verzoek aan op de Apache webserver, die verwerkt uw hele PHP code en vraagt met de nodige SQL queries alle data op van de MySQL database server.
De volgende bezoeker die uw website bezoekt doet de hele cyclus opnieuw: webserver -> PHP verwerken -> MySQL data ophalen -> pagina aan de gebruiker bezorgen. Ook al is het eindresultaat in beide gevallen vaak 100% identiek, toch wordt alles opnieuw berekend en opgevraagd. En dat vraagt tijd van uw bezoeker en tijd voor de CPU van uw server.
Dat moet dus efficiënter kunnen, dachten ze bij Varnish Software, in de vorm van pagina caching. Wat als het eind-resultaat van de pagina al kan bijgehouden worden zodat een bezoeker die de identieke pagina opvraagt niet het hele proces moet doorlopen? Het resultaat is dat uw bezoeker van de site sneller een response krijgt en sneller de gewenste pagina op zijn of haar scherm kan zien, zonder wachttijden.
Hoe werkt het?
We moeten eerlijk zijn, Varnish is geen eenvoudige software. Doordat het eigenlijk als man-in-the-middle (of proxy) optreed tussen de bezoeker van uw website en de webserver is het zelfs het meest cruciale onderdeel van uw hele software stack.
Als Varnish zich niet gedraagt zoals het hoort kan een verzoek van uw bezoeker verloren gaan en niet tot bij uw webserver geraken. Of het antwoord van de webserver geraakt niet terug tot bij uw bezoeker.
Varnish splitst het hele HTTP verzoek van de bezoeker en het antwoord van de webserver op in verschillende blokken, waar je als systeembeheerder of ontwikkelaar kan inpikken. Je kan het inkomende verzoek aanpassen (de ‘Receive’ routine of ‘vcl_recv’) en headers toevoegen of aanpassen net als het antwoord van de webserver (de ‘Fetch’ routine of ‘vcl_fetch’). De meeste standaard PHP applicaties bijvoorbeeld laten het uitschijnen alsof elke bezoeker uniek is door een uniek PHP sessie cookie mee te geven, terwijl in de praktijk de meeste bezoekers anoniem zijn.
Varnish wordt ingesteld door gebruik te maken van een scripting taal genaamd ‘VCL’ of ‘Varnish Configuration Language‘. De syntax van die configuraties lijkt erg hard op C-code en in de achtergrond wordt het daar ook naar gecompileerd om Varnish supersnel te maken. Door met een scripting taal te werken krijg je de mogelijkheid *alles* te doen met een HTTP verzoek: je kan het van begin tot einde aanpassen. Dat is meteen de kracht en complexiteit van Varnish. Een grondige kennis van het basis HTTP protocol is alvast een must voor je kan beginnen werken met Varnish.
Edge Side Includes vs. hele pagina cachen
De meest gebruikte vorm van Varnish is diegene waarbij hele pagina’s in de cache komen. Maar hoe complexer uw site wordt, des te complexer meestal ook de caching strategie. Een typisch voorbeeld is een webpagina waar je als ingelogde gebruiker bovenaan een persoonlijke begroeting hebt, als ‘Hallo, {gebruikersnaam}’. Die persoonlijke begroeting maakt die pagina eigenlijk uniek voor u als bezoeker, maar de nieuwsberichten die getoond worden zijn mogelijk wel identiek aan die van een anonieme bezoeker.
Edge Side Includes of ESI maakt het mogelijk om sommige stukken van een pagina te cachen en andere dynamisch te houden. Zo krijgt u het beste van beide werelden: de inhoud die voor zowel anonieme als ingelogde gebruikers toch hetzelfde is moet niet telkens berekend worden en tegelijk krijgt u de kracht van gepersonaliseerde pagina’s.
Amai, da’s complex?
We ontkennen het niet, Varnish is complex. Wij hebben er meerdere jaren ervaring mee en zijn er meer dan vertrouwd genoeg mee om u alle ondersteuning te bieden die u nodig heeft. Bent u geïnteresseerd in wat Varnish kan betekenen voor uw site of server?