Cache Varnish : plus de performance pour des sites Web dynamiques

Les projets Web dynamiques perdent de leur performance au fur et à mesure que leur complexité et que le nombre de leurs utilisateurs progressent. Afin de décharger un serveur Web et de pallier à sa perte de rapidité, il est possible d’utiliser un reverse proxy dont l’objectif est de répondre aux requêtes faites au serveur Web et de sauvegardes le matériel requis (le contenu statique tel que les images et les résultats des pages souvent consultées) par la suite dans le cache. Varnish fait partie de ces programmes très appréciés. Contrairement à beaucoup de ses concurrents, ce logiciel libre a été développé dans le but d’accélérer le Web. L’utilisation d’un cache Varnish nécessite un serveur Web avec un système d’exploitation sous Unix ainsi que des accès racine pour l’installation et la configuration.

Voilà comment fonctionne le cache Varnish

Varnish est directement activé en tant que reverse proxy pour le serveur Web où se trouve le contenu du site Web en question. Lorsqu’une page est chargée, le processus est d’abord traité par le serveur d’origine mais le proxy Varnish sauvegarde la requête et le contenu requis. Lors d’un nouveau chargement de ce genre, les données peuvent directement être chargées en partant du cache Varnish. Le programme stocke alors toutes les données dans la mémoire vive et laisse le système d’exploitation décider ce qui doit être déplacé sur le disque dur du serveur. Ainsi, il est possible d’éviter que le système ne sauvegarde en même temps des données dans le cache et sur le disque dur.

Varnish sert également de répartiteur de charge (Load balancer). Suite au processus round robin, les requêtes entrantes du client sont évaluées respectivement en tant que threads séparés (phases de travail) qui sont successivement traitées par le cache Varnish. Une limite fixe détermine combien de threads peuvent être traités en même temps. Ce processus fini, toutes les requêtes atterrissent dans une file d’attente. C’est seulement quand le bout de la file est atteint que les connexions entrantes sont bloquées.

La configuration du proxy reverse de Varnish est contrôlée principalement via le langage propriétaire spécifique du programme (Varnish Configuration Language (VCL) en anglais). Ce dernier permet d’écrire des jonctions à l’aide desquels un code étranger peut être intégré dans l’application. Si un tel script VLC charge, ce dernier est traduit dans le langage de programmation C et compilé dans une bibliothèque de programmes. Les instructions de VCL sont reliées avec le cache Varnish. Si le CMS utilisé, le logiciel de la boutique en ligne ou l’application Web de base maîtrisent la langue de balisage ESI (Edge Side Includes), Varnish peut par ailleurs livrer les pages mises en cache dans leur ensemble. Le langage de balisage crée dans les fichiers HTML des pages appelées balises ESI qui caractérisent le contenu dynamique. Lors d’une requête d’un client, le cache Varnish reconnaît ces balises et charge les contenus correspondants.

Avantages et inconvénients d’un hébergement avec Varnish

Un cache Varnish peut vous aider à optimiser votre hébergement si votre projet Web est de plus en plus complexe et si le nombre de vos utilisateurs / visiteurs progresse. Il est important de garder en mémoire que ce logiciel ne convient pas à tous les sites Internet. Voici une synthèse des avantages et des inconvénients du cache Varnish qui vous permettront de mieux faire votre choix :

Avantages Inconvénients
✔ Temps de chargement plus court grâce aux contenus qui figurent dans la mémoire vive ✘ Pour les systèmes qui ne maîtrisent pas ESI, le cache Varnish ne permet aucune optimisation
✔ Soulagement du serveur Web ✘ Davantage de complexité et le site est plus propice aux bugs
✔ Prise en charge par les balises ESI ✘ Aucune prise en charge par TLS/SSL voire HTTPS
✔ Le système d’exploitation stocke les contenus sur le disque dur du serveur ✘ L‘installation et la configuration prend beaucoup de temps et exige un certain savoir faire
✔ Répartiteur de charge suite au processus round robin ✘ Adapté seulement aux systèmes d’exploitation qui fonctionnent sous UNIX
✔ Diverses possibilités de configuration grâce à VCL  

Cette comparaison met en lumière le fait que Varnish ne représente pour vous qu’une alternative aux capacités de cache des clients et des serveurs Web qui existent déjà. Par ailleurs, l’installation et la configuration du cache Varnish comprenant les balises ESI ne se font pas sans effort. Etant donné que Varnish ne prend pas en charge les connexions TLS/SSL, vous aurez besoin d’un serveur proxy supplémentaire pour une transmission sécurisée.

Un cache Varnish bien configuré comprenant des balises ESI pourra accélérer votre site Internet de manière bien plus efficace que les méthodes de cache traditionnelles. Il permet en effet de réduire le temps de chargement, ce qui vous aide à terme à améliorer votre taux de conversion, mais également de bénéficier d’un meilleur référencement et de soulager votre serveur Web qui n’est plus le seul à traiter les connexions entrantes. Le cache Varnish jouit d’une grande popularité en particuliers chez les administrateurs de boutiques en ligne et les sites Internet d’envergure.

Varnish Cache installieren

L’installation du cache Varnish implique que les droits d’administrateurs doivent passer par le système UNIX. Par ailleurs, il faut que le serveur Web, qui doit être activé pour le programme, soit déjà installé. Voici un exemple d’installation et de configuration de Varnish avec le système d’exploitation Ubuntu et le serveur Web Apache :

1. Varnish est inclus par défaut dans les gestionnaires de paquets de logiciels Ubuntu mais sa version n’est pas tout le temps à jour. Le programme permet d’avoir accès à son propre répertoire en ligne lors de l’installation. Voici comment ouvrir ce répertoire et le relier en tant que source.

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

2. Par la suite, insérez à nouveau les listes de paquets et installez Varnish :

sudo apt-get update
sudo apt-get install varnish

3. Il s’agit désormais de configurer le fichier Varnish de sorte que le logiciel sache où il peut trouver le contenus du Web :

sudo nano /etc/default/varnish

A partir de là, modifiez les informations sous « DAEMON_OPTS » comme suit :

DAEMON_OPTS="-a :80 \|
|-T localhost:6082 \
|-f /etc/varnish/default.vcl \
|-S /etc/varnish/secret \
|-s malloc,256m"

4. Enregistrez les modifications et ouvrez maintenant le fichier default.vlc

sudo nano /etc/varnish/default.vlc

Indiquez le port 8080 comme source pour le contenu créé par Varnish :

backend default {|
|.host = "127.0.0.1";
|.port = "8080";
|}

5. Enfin, réglez le port 8080 pour Apache (par défaut 80). Ouvrez également le fichier de configuration du port Apache :

sudo nano /etc/apache2/ports.conf

Modifiez le numéro de port pour les entrées « NameVirtualHost » et « Listen » comme ci-dessous :

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Adaptez de la même façon l’entrée virtualHost dans le fichier default (etc/apache2/sites-available/default).

7. Redémarrez enfin le serveur et Varnish afin de terminer l’installation et les réglages :

sudo service apache2 restart
sudo service varnish restart

Vous trouverez d’autres instructions sur le site de varnish-cache.org. Vous pourrez avoir plus d’informations sur les autres systèmes d’exploitation Unix ainsi que sur les codes de programmation du logiciel.