3
votes

Le vernis retourne MISS après un HIT réussi

Mon application utilise Varnish 3.0.2. Je suis confronté à un problème étrange ici. Certaines fois, les pages sont servies à partir de Varnish avec un HIT . Mais immédiatement après avoir renvoyé MISS .

J'avais l'impression qu'une fois qu'il sera servi à partir du cache, il continuera à le faire jusqu'à ce que le TTL expire. Ai-je tort de comprendre cela?

Voici les deux en-têtes de réponse pour les deux scénarios:

HIT

<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
      })(window,document,'script','dataLayer','GTM-XXX');</script>


1 commentaires

Pourquoi les en-têtes de contrôle du cache sont-ils différents dans les deux réponses? Pourquoi une réponse a-t-elle un en-tête Expire et l'autre pas?


3 Réponses :


2
votes

Je suppose qu'il provient de deux serveurs de vernis différents basés sur les deux en-têtes de réponse:

X-Varnish-Leg: 128.87.225.158

et

X-Varnish-Leg: 128.87.225.172


2 commentaires

C'est parce que nous avons deux pattes de serveur et que du vernis est installé dans les deux. En conséquence, la réponse Varnish provient des deux en fonction de la charge du serveur. Mais cela peut-il affecter les HIT? Je veux dire qu'il peut ne pas afficher HIT pour une ou deux réponses, mais une fois qu'il est mis en cache, il devrait commencer à afficher HIT. Cela ne se produit pas dans mon cas. Le ratio hit to miss est de presque 4: 1. J'ai également noté une nouvelle chose, si je supprime complètement Google Analytics, le vernis fonctionne parfaitement. J'ai créé une exception pour les cookies GA dans vcl. Vérifiez le commentaire ci-dessous.


set req.http.Cookie = regsuball (req.http.Cookie, "(^ |; \ s *) (_ [_ a-z] + | Drupal.visitor.name | WEBTRENDS_ID | WT_FPC | J‌ SESSIONID | sifrFetch | ‌ sso_hide_login | ei_se‌ ssion_test | ei_sessio‌ n | has_js | BIGipServer‌ [a-zA-Z_0-9] *) = [^;] * ‌ "," ");



0
votes

+1 pour Ronald, pensez également à passer à la dernière version de Varnish 6 car les années se sont écoulées depuis Varnish 3, de nombreux bugs ont été corrigés et des améliorations ont été apportées. De plus, la V3 est en fin de vie.


4 commentaires

Oui, en fait cette question concerne notre ancienne application qui elle-même est sur une ancienne plateforme Drupal. Nous améliorons cela. Dans cette nouvelle itération, nous avons utilisé Varnish 4. Question rapide cependant, si nous prévoyons de mettre à niveau le vernis dans cette nouvelle plate-forme de 4 à 6 comme vous le suggérez, quelle différence pensez-vous que cela aura sur les changements de langue de configuration?


Passer de 4 à 6 est moins perturbateur que de passer de 3 à 4. La VCL ne change pas beaucoup de 4 à 6, vous pouvez jeter un œil à la section "mise à jour de la VCL": docs.varnish-software.com/varnish-cache-plus/upgrading/…


Merci pour cela. Bien que toujours en attente d'une réponse à ma question initiale. : P


Ronald a répondu: si vous avez deux caches, leurs caches ne sont pas synchronisés (dans la version open-source)



3
votes

Il s'avère que c'était en fait un problème dans la configuration de la VCL avec l'expression régulière que j'utilisais. Je n'avais pas considéré les caractères non alpha du cookie Google Ananlytics. Modification de l'expression régulière en _ [_ \ - \. \ = A-zA-Z0-9] et tout est à nouveau amusant!

J'espère que cela aide quelqu'un.


0 commentaires