我正在使用 Varnish 来提供网站服务,但需要根据地理位置进行缓存。我编写了一个小型 Vmod,它使用 Ip2Location 设置一个请求 header ,其中包含国家/地区代码,然后通过 Apache 传递到我的应用程序(Magento),Apache 提供相关内容,但我还需要 Varnish 根据国家/地区代码进行缓存.
有什么办法可以实现这一点吗?
最佳答案
我已经对此进行了排序。
在 vcl_hash 子例程中,我需要将国家/地区代码添加到哈希数据中。
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
hash_data(req.http.X-Country-Code);
return (hash);
}
我使用的默认 vcl 已注释掉整个 vcl_hash 子例程,因为它使用 req.hash 而不是 hash_data(),后者在 Varnish 3 中不再可用,因此请根据需要进行调整。
关于caching - 根据自定义 header 进行 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404468/