Configurer le vernis
[Varnish Cache] est un accélérateur d’applications web open source (également appelé accélérateur HTTP ou proxy inverse HTTP de mise en cache). Varnish stocke (ou met en cache) des fichiers ou des fragments de fichiers en mémoire, ce qui permet à Varnish de réduire le temps de réponse et la consommation de bande passante du réseau pour les futures demandes équivalentes. Contrairement aux serveurs web Apache et Nginx, Varnish a été conçu pour être utilisé exclusivement avec le protocole HTTP.
Configuration requise répertorie les versions prises en charge de Vernis.
Pour plus d'informations sur le vernis, voir :
- [Le Grand Vernis]
- [Options de démarrage avec vernis]
- Vernis et performances de site web
Diagramme de topologie de vernis
La figure suivante présente une vue de base de Varnish dans votre topologie Commerce.
Dans la figure précédente, les requêtes HTTP des utilisateurs sur Internet entraînent de nombreuses requêtes pour les CSS, HTML, JavaScript et les images (appelées collectivement ressources). Varnish se trouve en face du serveur web et envoie par proxy ces requêtes au serveur web.
Lorsque le serveur web renvoie des ressources, les ressources pouvant être mises en cache sont stockées en vernis. Toutes les demandes ultérieures pour ces ressources sont traitées par Varnish (en d’autres termes, les demandes n’atteignent pas le serveur web). Le vernis renvoie le contenu mis en cache extrêmement rapidement. Vous obtiendrez ainsi des temps de réponse plus rapides pour renvoyer le contenu aux utilisateurs et utilisatrices, ainsi qu’un nombre réduit de requêtes qui doivent être satisfaites par Commerce.
Les Assets mises en cache par Vernis expirent à un intervalle configurable ou sont remplacées par de nouvelles versions des mêmes ressources. Vous pouvez également vider le cache manuellement à l’aide de la commande Admin ou magento cache:clean
.
Présentation du processus
Cette rubrique explique comment installer initialement Varnish avec un jeu minimal de paramètres et tester son fonctionnement. Ensuite, exportez une configuration de vernis à partir de l’administration Commerce et testez-la à nouveau.
Le processus peut être résumé comme suit :
-
Installez le vernis et testez-le en accédant à n’importe quelle page Commerce pour voir si vous obtenez des en-têtes de réponse HTTP indiquant que le vernis fonctionne.
-
Installez le logiciel Commerce et utilisez l'Admin pour créer un fichier de configuration Varnish.
-
Remplacez votre fichier de configuration de vernis existant par celui généré par l'administrateur.
-
Testez à nouveau tout.
S'il n'y a rien dans votre répertoire
<magento_root>/var/page_cache
, vous avez correctement configuré Varnish avec Commerce !
-
Sauf indication contraire, vous devez saisir toutes les commandes décrites dans cette rubrique en tant qu’utilisateur disposant de droits d’
root
. -
Cette rubrique a été écrite pour Varnish sur CentOS et Apache 2.4. Si vous configurez le vernis dans un environnement différent, certaines commandes peuvent être différentes. Consultez la documentation de Varnish pour plus d’informations.
Problèmes connus
Nous connaissons les problèmes suivants avec le vernis :
-
Le vernis ne prend pas en charge SSL
Vous pouvez également utiliser la terminaison SSL ou un proxy de terminaison SSL.
-
Si vous supprimez manuellement le contenu du répertoire
<magento_root>/var/cache
, vous devez redémarrer Varnish. -
Erreur possible lors de l’installation de Commerce :
code language-none Error 503 Service Unavailable Service Unavailable XID: 303394517 Varnish cache server
Si vous rencontrez cette erreur, modifiez les
default.vcl
et ajoutez un délai d’expiration à la staturebackend
comme suit :code language-conf backend default { .host = "127.0.0.1"; .port = "8080"; .first_byte_timeout = 600s; }
Présentation de la mise en cache du vernis
La mise en cache des vernis fonctionne avec Commerce à l’aide des éléments suivants :
nginx.conf.sample
du référentiel GitHub de Magento 2.htaccess
fichier de configuration distribué pour Apache fourni avec Commerce- Configuration
default.vcl
pour le vernis générée à l’aide de l’Admin
Lors de la première requête du navigateur, les ressources pouvant être mises en cache sont diffusées au navigateur client à partir de Varnish et mises en cache dans le navigateur.
En outre, Varnish utilise une balise d’entité (ETag) pour les ressources statiques. L’ETag permet de déterminer à quel moment les fichiers statiques changent sur le serveur. Par conséquent, les ressources statiques sont envoyées au client lorsqu’elles sont modifiées sur le serveur, soit lors d’une nouvelle demande d’un navigateur, soit lorsque le client actualise le cache du navigateur, généralement en appuyant sur F5 ou Contrôle+F5.
Vous trouverez plus de détails dans les sections suivantes.
Mise en cache par requête de navigateur
Cette section utilise un inspecteur de navigateur pour afficher la manière dont les ressources sont diffusées au navigateur dans la première requête, puis chargées à partir du cache du navigateur local.
Première requête de navigateur
nginx.conf.sample
et .htaccess
fournissent des options de mise en cache du client. Lorsque la première requête est effectuée à partir d’un navigateur pour un objet pouvant être mis en cache, Varnish la diffuse au client.
La figure suivante illustre un exemple d’utilisation d’un inspecteur de navigateur :
L’exemple précédent illustre une requête pour la page principale de storefront (m2_ce_my
). Les ressources CSS et JavaScript sont mises en cache dans le navigateur client.
Deuxième requête de navigateur
Si le même navigateur demande à nouveau la même page, ces ressources sont diffusées à partir du cache du navigateur local, comme le montre la figure suivante.
Notez la différence de temps de réponse entre la première et la seconde requête. Là encore, les ressources statiques ont un code de réponse 200 (OK), car elles sont diffusées à partir du cache local pour la première fois.
Utilisation d’Etag par Commerce
L’exemple suivant illustre les en-têtes de réponse pour une ressource statique spécifique.
calendar.css
comporte un en-tête de réponse ETag, ce qui signifie que le fichier CSS du navigateur client peut être comparé à celui du serveur.
En outre, les ressources statiques sont renvoyées avec un code d’état HTTP 304 (Non modifié), comme le montre la figure suivante.
Le code d’état 304 se produit, car l’utilisateur a invalidé son cache local et le contenu sur le serveur n’a pas été modifié. En raison du code d’état 304, la ressource statique content n’est pas transférée ; seuls les en-têtes HTTP sont téléchargés sur le navigateur.
Si le contenu change sur le serveur, le client télécharge la ressource statique avec un code d’état HTTP 200 (OK) et un nouvel ETag.