Comment définir les en-têtes de mise en cache HTTP dans Varnish VCL ?

Dec 08, 2025

Laisser un message

Frank Miller
Frank Miller
Frank est un superviseur de production dans l'usine. Avec plus de 10 ans d'expérience en production, il est compétent dans le processus de production des produits chimiques à la résine à base d'eau. Sa gestion efficace garantit la production stable et la production de haute qualité de l'entreprise.

Salut! En tant que fournisseur de Varnish, j'ai pu constater par moi-même comment la configuration des en-têtes de mise en cache HTTP dans Varnish VCL peut changer la donne pour les performances du site Web. Dans ce blog, je vais vous guider pas à pas tout au long du processus.

Tout d’abord, comprenons pourquoi les en-têtes de mise en cache HTTP sont si importants. Lorsqu'un utilisateur visite un site Web, le navigateur demande au serveur des ressources telles que HTML, CSS, JavaScript et des images. Sans mise en cache appropriée, le serveur doit traiter ces requêtes à chaque fois, ce qui peut ralentir le site, notamment pendant les périodes de fort trafic. Les en-têtes de mise en cache HTTP indiquent au navigateur et aux autres caches intermédiaires (comme Varnish) combien de temps ils peuvent stocker une ressource particulière et la réutiliser sans avoir à revenir au serveur.

2 Grossy Clear Varnish2 Leather Lacquer Coating(001)

Bases du vernis VCL

Varnish Configuration Language (VCL) est utilisé pour contrôler le comportement de Varnish. C'est comme un ensemble de règles que Varnish suit lors du traitement des demandes et des réponses. Il existe quelques sous-programmes clés dans VCL sur lesquels nous nous concentrerons pour définir les en-têtes de mise en cache :vcl_recv,vcl_backend_response, etvcl_deliver.

vcl_recv

Levcl_recvLe sous-programme est appelé lorsque Varnish reçoit une requête d'un client (généralement un navigateur). C’est un excellent endroit pour prendre la décision de mettre ou non en cache une requête. Par exemple, vous souhaiterez peut-être exclure certains types de demandes, comme celles concernant le contenu dynamique qui change fréquemment.

sub vcl_recv { # Ne pas mettre en cache les requêtes POST if (req.method == "POST") { return (pass); } # Vous pouvez ajouter ici plus de conditions basées sur des modèles d'URL if (req.url ~ "^/admin/") { return (pass); } }

Dans ce code, nous disons à Varnish de ne pas mettre en cache les requêtes POST car elles impliquent généralement des soumissions de formulaires et sont susceptibles d'être dynamiques. Nous excluons également les demandes commençant par/administrateur/car ils concernent probablement une zone administrative du site qui a un contenu dynamique.

vcl_backend_response

Levcl_backend_responseLe sous-programme est appelé lorsque Varnish reçoit une réponse du serveur backend. C'est ici que nous pouvons définir ou modifier les en-têtes de mise en cache.

sub vcl_backend_response { # Définir un temps de cache par défaut pour toutes les réponses set beresp.ttl = 3600s; # Vous pouvez définir différentes durées de cache en fonction du type de contenu if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Ajouter un cache personnalisé - ensemble d'en-têtes de contrôle beresp.http.Cache - Control = "public, max - age=3600"; }

Ici, nous définissons une durée de vie (TTL) par défaut de 3 600 secondes (1 heure) pour toutes les réponses. Pour le contenu HTML, nous réduisons la durée de vie à 1 800 secondes (30 minutes), car le HTML peut changer plus fréquemment. Nous ajoutons également unCache - Contrôleen-tête, qui est un en-tête HTTP standard qui indique au navigateur et aux autres caches comment gérer la ressource.

vcl_deliver

Levcl_deliverLe sous-programme est appelé juste avant que Varnish envoie la réponse au client. Vous pouvez l'utiliser pour ajouter ou modifier les en-têtes que le client verra.

sub vcl_deliver { # Ajoutez un en-tête personnalisé pour indiquer que la réponse est mise en cache par Varnish set resp.http.X - Cached - By = "Varnish"; }

Dans cet exemple, nous ajoutons un en-tête personnaliséX - Mis en cache - Parpour faire savoir au client que la réponse a été mise en cache par Varnish.

Scénarios de mise en cache avancés

Examinons quelques scénarios plus avancés pour définir les en-têtes de mise en cache.

Contournement du cache

Parfois, vous souhaitez forcer le navigateur à récupérer une nouvelle version d'une ressource, même si elle est encore dans le temps de cache. Vous pouvez le faire en ajoutant un numéro de version ou un hachage à l'URL de la ressource. Dans VCL, vous pouvez gérer cela en supprimant le numéro de version de l'URL avant de le transmettre au backend.

sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { set req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); } }

Ce code supprime le?v=123partie de l'URL, afin que Varnish puisse mettre en cache la ressource en fonction de l'URL d'origine sans le numéro de version.

Mise en cache conditionnelle

Vous souhaiterez peut-être mettre en cache une ressource uniquement si certaines conditions sont remplies. Par exemple, vous pouvez mettre en cache une page uniquement si elle possède un code d'état HTTP spécifique.

sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s ; définir beresp.http.Cache - Control = "public, max - age=3600" ; } else {set beresp.ttl = 0s; définir beresp.http.Cache - Control = "no - cache" ; } }

Ici, nous mettons en cache les réponses réussies (code d’état 200) pendant une heure, mais nous ne mettons pas en cache les autres réponses.

Utiliser nos produits de vernis

Dans notre entreprise, nous proposons une gamme de produits liés à Varnish qui peuvent faciliter encore plus la configuration et la gestion des en-têtes de mise en cache HTTP. Par exemple, notreCouche de finition mate à base d'eauest une excellente option pour les sites Web qui souhaitent une finition lisse et mate tout en bénéficiant d'une mise en cache optimisée. Il est livré avec des modèles VCL préconfigurés que vous pouvez facilement personnaliser pour répondre à vos besoins spécifiques.

NotreBrillant polyuréthane à base d'eauest un autre excellent choix. Il offre un aspect très brillant et intègre des fonctionnalités de mise en cache avancées. Vous pouvez l'utiliser pour mettre en cache différents types de ressources avec différentes durées de cache, en fonction de vos besoins.

Et si vous recherchez une solution plus générale, notreVernis transparent à base d'eauest une excellente option. Il offre une couche de protection claire pour les ressources de votre site Web et aide à configurer des en-têtes de mise en cache efficaces.

Contactez-nous pour l'achat

Si vous souhaitez en savoir plus sur nos produits Varnish ou si vous avez besoin d'aide pour configurer les en-têtes de mise en cache HTTP dans Varnish VCL, n'hésitez pas à nous contacter. Nous disposons d'une équipe d'experts qui peuvent vous guider tout au long du processus et vous aider à tirer le meilleur parti de votre configuration de mise en cache. Que vous soyez une petite entreprise avec un simple site Web ou une grande entreprise avec des besoins de mise en cache complexes, nous avons ce qu'il vous faut.

Références

  • Documentation du vernis
  • RFC de mise en cache HTTP (RFC 7234)

Alors voilà ! Définir les en-têtes de mise en cache HTTP dans Varnish VCL peut sembler un peu complexe au début, mais avec les bonnes connaissances et nos produits, vous pouvez optimiser les performances de votre site Web et offrir une meilleure expérience à vos utilisateurs.

Envoyez demande
Contactez-nousSi vous avez une question

Vous pouvez nous contacter par téléphone, e-mail ou formulaire en ligne ci-dessous. Notre spécialiste vous contactera sous peu.

Contact maintenant!