如何根据不同类型的请求不同地分配 Varnish 缓存?

如何根据不同类型的请求不同地分配 Varnish 缓存?

我的商店中有一个重定向,可根据客户的位置显示不同的商店视图。它通过 Fastly 读取标头,并每次使用相同的 URL 将客户重定向到不同的商店视图。

当有许多客户访问商店时,缓存会混合,即使重定向工作,缓存也会分发给任何位置的所有客户,使得来自英国的客户看到美国商店的视图。

我如何通过 VCL 文件定制缓存块,而不仅仅是通过根据位置分发缓存来重定向?

答案1

您将需要使用该标头对请求进行哈希处理,告诉 Varnish 请求该标头中的差异会生成不同的响应。

只需将类似这样的内容添加到您的 vcl 中,并将其替换X-Your-Location-Header为您的标题名称:

sub vcl_hash {
  /* Custom header hashing */
  if ( req.http.X-Your-Location-Header ) {
    hash_data(req.http.X-UA-Device);
  }

https://www.varnish-cache.org/docs/trunk/users-guide/vcl-built-in-subs.html#vcl-hash

相关内容