成功 HIT 后清漆 returns MISS

Varnish returns MISS after successful HIT

我的应用程序使用 Varnish 3.0.2。我在这里面临一个奇怪的问题。有时页面是从带有 HIT 的 Varnish 提供的。但紧随其后 returns MISS.

我的印象是,一旦从缓存中获取服务,它将继续这样做,直到 TTL 过期。我理解错了吗?

以下是两种情况下的两个响应 headers:

命中

HTTP/1.1 200 OK
Server: Apache/2.4.16 (Unix) mod_auth_kerb/5.4 PHP/5.3.29
X-Powered-By: PHP/5.3.29
X-Drupal-Cache: MISS
Content-Language: en
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
cache-control: max-age=86400, public
X-Cookie-Debug: Request cookie: 
X-Request-URL: /org/31633421?unit=31633421
Content-Length: 11986
Accept-Ranges: bytes
Date: Wed, 24 Apr 2019 14:26:43 GMT
X-Varnish: 330015711 330015651
Via: 1.1 varnish
Connection: keep-alive
X-Varnish-Cache: HIT
X-Varnish-Cache-Hits: 1
X-Varnish-Age: 188
X-Varnish-Leg: 128.87.225.172
X-Varnish-Cache-Version: 3.0.2

小姐

HTTP/1.1 200 OK
Server: Apache/2.4.16 (Unix) mod_auth_kerb/5.4 PHP/5.3.29
X-Powered-By: PHP/5.3.29
X-Drupal-Cache: MISS
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: public, max-age=300
Content-Language: en
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
X-Cookie-Debug: Request cookie: _gat_UA-15166137-36=1
X-Request-URL: /org/31633421?unit=31633421
Content-Length: 11978
Accept-Ranges: bytes
Date: Wed, 24 Apr 2019 14:23:52 GMT
X-Varnish: 1900997574
Via: 1.1 varnish
Connection: keep-alive
X-Varnish-Cache: MISS
X-Varnish-Age: 0
X-Varnish-Leg: 128.87.225.158
X-Varnish-Cache-Version: 3.0.2

我已经尝试增加 TTL 值,删除所有 cookie(包括 Google Analytics),但它仍然表现得很突然。

知道为什么吗?

更新

似乎这是因为在我的视图模板中包含以下 Google 标签管理器 JS 代码。

<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>

我的猜测是它来自两个不同的清漆服务器,基于两个响应headers:

X-Varnish-Leg: 128.87.225.172

X-Varnish-Leg: 128.87.225.158

+1 给 Ronald,也请考虑升级到最新的 Varnish 6,因为自 Varnish 3 以来已经过去了很多年,修复了许多错误并进行了改进。此外,V3 已停产。

事实证明,这实际上是我使用的正则表达式的 VCL 配置中的一个问题。我没有考虑 Google Ananlytics cookie 的非字母字符。将正则表达式修改为 _[_\-\.\=a-zA-Z0-9],一切又变得有趣了!

希望这对某人有所帮助。