当 varnish 通过Purge
and使缓存失效时Ban
,它是否使用 vcl_hash 中定义的哈希键来帮助查找对象?如果我要通过自定义标头obj.http.page_id
而不是本文obj.http.url
推荐的方式使缓存无效,由于不使用散列键,它会影响性能吗?我在文档中没有看到任何提及这一点,但想在使用新方法之前说清楚。http.page_id
sub vcl_recv {
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return (synth(405, "Not allowed."));
}
ban("obj.http.url ~ ^" + req.url);
return (purge);
}
}
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
}