Aller au contenu
EuroVPSEuroVPS

Varnish Cache expliqué

Si vous débutez avec Varnish et voulez en savoir plus sur cet outil de caching d'une rapidité insolente, cet article est pour vous. Nous parlerons de ce qu'est Varnish, de son fonctionnement et des cas où il convient.

Par Robert Hughes

Mis à jour le 22 octobre 20265 min de lecture
Image de couverture : Varnish cache

Varnish est devenu synonyme d'accélération HTTP haute performance. Varnish Cache est un accélérateur reverse proxy HTTP open source qui excelle à réduire la charge de votre serveur web. Varnish se place devant le serveur web et agit comme un proxy qui fait le pont entre le navigateur et le serveur.

Poul-Henning Kamp, le créateur de Varnish
Poul-Henning Kamp (le créateur de Varnish)

Le projet Varnish est né dans l'esprit de l'architecte technologique danois Poul-Henning Kamp. Consultant FreeBSD reconnu, Kamp a été le développeur principal de Varnish.

Le projet Varnish a été lancé par la branche en ligne du quotidien norvégien Verdens Gang. Mais le logiciel a eu tant de succès qu'il a fini par être scindé en une société distincte.

Ne vous inquiétez pas pour autant : il reste un logiciel gratuit et entièrement open source, disponible sous licence BSD à deux clauses. Si vous voulez un support commercial, il est disponible auprès de Varnish Software.

Aujourd'hui, le support, la gestion et le développement de Varnish sont assurés sous la bannière de Varnish Software.

Comment fonctionne Varnish ?

Imaginez le scénario suivant. Vous entrez dans un café très fréquenté et vous commandez le café filtre de la maison. La personne au comptoir vérifie d'abord s'il y a une cafetière fraîche prête à servir.

S'il y en a une, vous obtenez votre tasse immédiatement. Sinon, la commande part au barista qui prépare une nouvelle cafetière. Varnish fait le travail de la personne au comptoir.

Varnish se place devant votre serveur web et, la première fois qu'un visiteur demande une page web, Varnish reçoit la requête et la transmet au serveur backend. Le serveur backend traite la requête et renvoie la réponse au navigateur.

Varnish, pendant ce temps, « met en cache » le contenu rendu et le stocke dans une mémoire RAM ultra-rapide.

Toute requête suivante pour la même page web est servie directement depuis la version en cache (en mémoire RAM !) sans déranger le serveur web ni la base de données.

Qui utilise Varnish ?

De nombreux sites d'actualité et de contenu à fort trafic utilisent Varnish.

Varnish offre de grands bénéfices de performance aux sites web riches en contenu et à fort trafic. Il peut servir à mettre en cache du contenu statique comme dynamique.

Une idée reçue veut que Varnish ne serve qu'au contenu statique, mais avec quelques réglages du .VCL il peut fonctionner à merveille même pour des sites web dynamiques et des applications mobiles.

Pourquoi Varnish est-il si rapide ?

Si vous voulez pouvoir servir des milliers de requêtes simultanées par seconde sans surcharger votre serveur web, Varnish est l'un des meilleurs accélérateurs HTTP qui existent.

image: src /blog/wp-content/uploads/2012/10/varnish-diagram.jpg (unchanged); alt: Schéma de Varnish placé devant le serveur web

Dans la configuration de Varnish, vous pouvez définir si vous voulez que Varnish stocke le cache sur le disque dur ou en mémoire RAM.

Pour obtenir la sensation immédiate du « je clique et c'est là », vous voudrez que ce cache soit stocké exclusivement dans votre RAM.

Avec une installation Varnish correctement configurée, vous verrez un temps de réponse bien plus bas et une énorme baisse de la consommation de ressources du serveur.

Varnish est-il difficile à configurer ?

RHEL et ses dérivés fournissent un paquet Varnish.

Varnish est livré avec une configuration de base par défaut, utilisable telle quelle pour faire tourner l'accélération HTTP avec un minimum d'efforts. Varnish lui-même ne termine pas le HTTPS, donc sur un site moderne il se place derrière un terminateur TLS comme HAProxy ou nginx.

Varnish vous fournit un fichier Varnish Configuration Language (VCL), dans lequel vous jouez avec les réglages pour affiner ses performances. Le fichier VCL dit à Varnish exactement comment gérer le processus de caching.

Quand et quoi mettre en cache, quand ne pas le faire, et combien de temps garder le contenu en cache en mémoire.

Maîtriser le .VCL vous donne des super-pouvoirs, qui vous permettent de modifier presque chaque aspect d'une requête et d'une réponse HTTP.

Quand utiliser Varnish

  1. Si vous avez un site web riche en contenu avec des pics de trafic fréquents
  2. Varnish est excellent pour les serveurs à forte charge de base de données. En mettant en cache les requêtes web les plus courantes, votre serveur MySQL peut se reposer un peu.
  3. Si vous voulez réduire l'activité de votre disque, en prolongeant sa durée de vie.
  4. Si un seul serveur web et une seule base de données doivent servir des milliers de visiteurs simultanés.

Quand ne pas utiliser Varnish ?

Il existe bien des moyens plus simples d'obtenir de grands gains de performance, comme le micro caching de NGiNX, à essayer avant de recourir à Varnish.

Pour les petits sites web avec moins de 1 000 pages vues par jour, vous serez probablement très bien avec une pile LAMP optimisée ou NGiNX avec PHP-FPM.

En raison de la complexité de l'adaptation du fichier .VCL à vos exigences précises, il n'en vaut parfois tout simplement pas la peine d'utiliser Varnish. Faire bien fonctionner Varnish avec du contenu dynamique est délicat. Bien sûr, vous pouvez utiliser le « hole punching » ESI pour servir du contenu propre à chaque utilisateur, mais est-ce vraiment nécessaire ?

Commencez par les fruits à portée de main

Avant Varnish, faites les corrections les moins chères : optimisation des images, CSS et JavaScript minifiés, réglage de MySQL.

Lecture associée : 10 raisons pour lesquelles votre site se charge lentement (et comment les corriger)

Conclusion

Configurer Varnish pour qu'il serve correctement le contenu et respecte les exigences de votre organisation peut être délicat. Les règles d'expiration du cache, le time to live, le caching par URL et les exigences d'object caching dans Varnish sont particulièrement complexes. En conséquence, de nombreuses sociétés de conseil sont nées du besoin de faire réaliser des « implémentations Varnish » dans les environnements de leurs clients.

Chez EuroVPS, nous faisons tourner Varnish devant des sites à fort trafic, et nos ingénieurs peuvent vous aider à concevoir la couche de caching du vôtre.

Extrait des archives du blog EuroVPS, publié pour la première fois le 17 octobre 2012.

Toutes les notes de terrain