Hoe werkt Varnish? Wat kan je er allemaal mee doen?
In onze vorige blogpost vertelden we dat Varnish je website flink wat sneller kan maken. Maar Varnish is een complexe tool. Daarom gaan we in dit tweede artikel in detail bekijken hoe Varnish precies werkt en hoe het verzoeken van client- en server samenbrengt.
Download ons gratis Varnish e-book
Hoe werkt Varnish?
Varnish is een stukje technologie dat tussen je klant en je server staat om dingen sneller te maken. Zo ziet dat eruit… Jouw klant, tevreden achter zijn laptop, gaat een verbinding maken met jouw server en wil toegang tot jouw website. Hij gaat verbinden met Varnish, en Varnish gaat een kijkje nemen in zijn cache om te zien of er al een antwoord is voor die specifieke pagina.
Is dat niet zo, zal Varnish op zichzelf een request sturen naar je webserver. Dit is waar je PHP connecteert met je database, je Redis, je API calls… Dit is waarom het een tijdje duurt om een pagina te tonen. Zodra dat werk gedaan is stuurt de webserver het naar Varnish. Varnish slaat het op in de cache en bezorg het aan de eindgebruiker.
De volgende keer wanneer iemand die pagina bezoekt of dezelfde gebruiker komt terug doet Varnish dezelfde zoektocht in de cache, maar deze keer zal hij wel exact dezelfde HTML-pagina vinden. Varnish levert die dan aan je klant, in milliseconden in plaats van seconden.
Bekijk onze video-tutorial: Maak jouw website vliegensvlug met caching
De verschillende delen van Varnish
Elk van de onderdelen: het deel waar je gebruiker verbindt met Varnish, het deel waar Varnish verbindt met je webserver, zijn blokken die wij, of jij, kunnen finetunen. Je kan logica toevoegen om cookies of URL-parameters te verwijderen, of de host-header normaliseren.
Als je een request stuurt om verbinding te maken met de ‘langzame’ webserver kan je debug-headers toevoegen, kan je aanvullende informatie toevoegen om je een idee te geven, aan de serverkant, wat je klant heeft gevraagd. Extra headers, het manipuleren van cookies, enz.
Zodra de server klaar is met al die dingen, kom je bij een ander blok dat je ook kunt finetunen. Headers toevoegen of verwijderen… wat je wil. Vervolgens ga je naar de caching, het hart en de ziel van Varnish zelf, waar je kan finetunen wat een bepaalde URL definieert.
Als ik je site bezoek versus mijn collega en je hebt bijvoorbeeld een winkelmandje dan is het resultaat anders. De cache is waar je bepaalt welke parameters worden gebruikt om mijn request te herkennen versus die van mijn collega. Het onderdeel VCL_deliver is eigenlijk het laatste deel voor je gegevens worden verzonden naar een klant. En de laatste plaats waar je kan opruimen. Stel dat je debug headers had, dan kunnen die nog weg voordat ze tot bij je klant komen.
Varnish Configuration Language (VCL)
Het finale resultaat is een snelle ervaring voor je bezoeker. Die krijg je door Varnish af te stellen met een C-achtige configuratiesyntaxis. Het is een VCL-bestand, de Varnish-configuratietaal. Je kunt Varnish programmeren om te doen wat je wilt. Je kunt headers verwijderen, je kunt headers toevoegen, je kunt bepaalde URL’s herschrijven naar andere URL’s. Het is een zeer complex en een zeer uitgebreid configuratiebestand om dingen in te doen.
Het lastige deel is waar je de grens trekt tussen wat je webserver doet versus wat Varnish doet. Dat is een heel dunne lijn. Idealiter hou je Varnish zo eenvoudig mogelijk en doe je alles in je php, je Perl– of je Ruby-toepassing. Varnish geeft je de mogelijkheid om elk aspect ervan te finetunen.
Het grote verschil is dat je site offline kan gaan met 10 of overleven met 10.000 gebruikers gewoon door Varnish toe te voegen.
Key takeaways
Om te onthouden: Varnish is een complex stuk technologie dat wij je kunnen helpen configureren. Idealiter houd je het zo eenvoudig mogelijk en staat alle applicatielogica binnen je eigenlijke toepassing.
Wil je meer weten?