我的商店中有一个重定向,可根据客户的位置显示不同的商店视图。它通过 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