我想知道是否可以通过 url 使缓存的对象无效。
假设我有 url /api/0.1/user 和 url /api/0.1/userFriends,我想知道是否有办法在对 /api/0.1/userMedia 发出 PUT 请求时使 /api/0.1/user 无效。但是它只能通过 http 标头授权使缓存无效。因此基本上只能使执行 PUT 请求的用户的缓存无效。
我想我需要一个禁令配置才能使其工作,但是我对 varnish 还很陌生,因此如果能举个例子我将非常感谢!
答案1
应该是可以的。如果你在 vcl_recv 中有类似这样的内容:
sub vcl_recv {
if (req.request == "PUT") {
http.req.x-url = regsub(req.url, "(/api/0.1/user)Media", "\1");
ban_url("^" + x-url);
unset req.http.x-url;
}
}
这是完全未经测试的。有关 vcl 语法和语义的更多信息,请参阅“man vcl”。