Dynamische webprojecten gaan qua performance achteruit, naarmate de complexiteit en het aantal bezoekers toenemen. Om de webserver te ontlasten en het verlies van snelheid tegen te gaan, kun je een reverse proxy (omgekeerde proxy) gebruiken, die de aanvragen voor de webserver plaatsvervangend beantwoordt. Daarvoor slaat hij het opgevraagde materiaal (zowel statische inhoud, zoals afbeeldingen, als resultaten van regelmatig opgeroepen, dynamische pagina’s) eerst op in zijn cache. Een erg populaire cache-software is Varnish. In tegenstelling tot veel concurrenten is de gratis software volledig ontwikkeld als HTTP-accelerator. Het gebruik van Varnish Cache vereist een webserver met geïnstalleerd Unix-besturingssysteem en beheerdersrechten voor de installatie en configuratie.
Varnish wordt, als omgekeerde proxy, direct voor de webserver die de website-inhoud bevat, geïnstalleerd. Als er nu een pagina wordt opgeroepen, wordt deze eerst nog door de oorspronkelijke server verwerkt, maar de Varnish Cache proxy slaat de aanvraag en de vereiste inhoud op. Als de pagina nu opnieuw wordt opgeroepen, kunnen de gegevens direct uit de Varnish cache worden geladen. De software slaat daarbij alle gegevens op in het interne geheugen en laat het besturingssysteem kiezen wat naar de harde schijf van de server moet worden verplaatst. Zo wordt voorkomen dat het systeem tegelijkertijd gegevens in de cache en op de harde schijf opslaat.
Varnish fungeert daarnaast als load balancer. Volgens de round-robin-methode worden de binnenkomende aanvragen van de client telkens als aparte ‘werkthreads’ beschouwd, die achtereenvolgens door de Varnish cache worden afgehandeld. Een vastgelegde limiet bepaalt hoeveel actieve threads tegelijkertijd kunnen worden verwerkt. Als deze limiet is bereikt, komen alle andere aanvragen in een wachtrij terecht. Pas als ook de limiet van de wachtrij is bereikt, worden ingaande verbindingen geblokkeerd.
De configuratie van de Varnish reverse proxy wordt hoofdzakelijk gestuurd via de Varnish Configuration Language (VCL). Hiermee is het mogelijk om hooks (interfaces) te schrijven, waarmee externe codes in de toepassing kunnen worden geïntegreerd. Als zo’n VCL-script laadt, wordt het vertaald in de programmeertaal C en gecompileerd in een programmabibliotheek; de VCL-instructies worden aan de Varnish cache gekoppeld. Als het gebruikte CMS, de gebruikte webwinkel-software of de achterliggende webapplicatie de opmaaktaal ESI (Edge Side Includes) ondersteunt, kan Varnish bovendien volledig opgeslagen pagina’s aanleveren. In de HTML-bestanden van de pagina’s genereert de opmaaktaal zogenaamde ESI-tags, die dynamische inhoud kenmerken. Bij een client-aanvraag herkent de Varnish cache deze tags en wordt de desbetreffende inhoud geladen.
Het optimaliseren van je eigen hostingoplossing met Varnish Cache, kan in veel gevallen het antwoord zijn op de toenemende complexiteit van je project en het stijgende aantal bezoekers. Het gebruik van de software is echter niet aan te bevelen voor alle websites. Om een beter overzicht te bieden, hebben we de voor- en nadelen van Varnish-hosting voor je samengevat:
Voordelen | Nadelen |
---|---|
+ Kortere laadtijden dankzij content in het geheugen | - Voor systemen die ESI niet beheersen, biedt Varnish Cache niet veel verbetering |
+ Minder belasting van de webserver | - Verhoogde complexiteit en foutgevoeligheid |
+ ESI-ondersteuning | - Geen ondersteuning van TLS/SSL of HTTPS |
+ Besturingssysteem verplaatst de content naar de harde schijf van de server | - Instelling en configuratie zijn zeer gecompliceerd en vereisen speciale kennis |
+ Lastverdeling dankzij de round-robin-methode | - Alleen voor Unix-besturingssystemen |
+ Flexibele configuratiemogelijkheden dankzij VCL |
Het bovenstaande overzicht maakt duidelijk dat Varnish-hosting alleen een goed alternatief voor de bestaande cache-functies van clients en webservers is, als je met een webapplicatie werkt die de opmaaktaal ESI beheerst. Verder kost de installatie en configuratie van Varnish Cache, inclusief de ESI-tags, veel moeite. Omdat Varnish geen TLS-/SSL-verbindingen ondersteunt, heb je een tweede proxyserver nodig voor een veilige overdracht.
Een goed geconfigureerde Varnish-cache, inclusief ESI-tags, kan je webproject echter wel een stuk sneller maken dan gangbare caching-methoden. De Varnish-cache vermindert de laadtijden voor je bezoekers enorm en kan daarom op lange termijn tot een aanzienlijk hogere conversation rate leiden. Daarnaast profiteer je automatisch van een betere zoekmachine-ranking en ontlast je de webserver, die niet meer alleen verantwoordelijk is voor het verwerken van ingaande verbindingen. Met name onder eigenaars van webshops en websites met veel content is Varnish-hosting daarom erg populair.
Om Varnis Cache te installeren, zijn beheerdersrechten voor het gebruikte UNIX-systeem een basisvoorwaarde. Verder moet de webserver waarop Varnish Cache moet worden geïnstalleerd, al ingericht zijn. In onderstaande handleiding lees je welke stappen moeten worden uitgevoerd om Varnish te installeren en configureren. Als voorbeeld zijn Ubuntu als besturingssysteem en Apache als webserver gebruikt:
sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1"
>> /etc/apt/sources.list.d/varnish-cache.list
sudo apt-get update
sudo apt-get install varnish
sudo nano /etc/default/varnish
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
sudo nano /etc/varnish/default.vlc
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sudo nano /etc/apache2/ports.conf
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
sudo service apache2 restart
sudo service varnish restart
Handleidingen voor de installatie van Varnish op andere Unix-besturingssystemen vind je, evenals de programmacode van de software, in de downloadsectie van de officiële website varnish-cache.org.