HTTP动词PURGE是幂等的吗? 如果我发送两次相同的PURGE请求,我会第二次收到200吗?
我有一个微服务,在将消息发布到兔子队列之前使Varnish缓存无效。在清除失败的情况下,我们需要只记录并继续执行。
队列使用者必须从Varnish缓存中获取资源的最新状态。 在第一个微服务的第一次清除成功的情况下,第二个微服务中的新清除请求(在从varnish请求资源之前)是否会返回成功?
答案 0 :(得分:4)
PURGE不是标准的HTTP方法。它只是在Varnish VCL中配置的东西 - 通常以这种方式或类似方式:
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
(参见:https://www.varnish-cache.org/docs/trunk/users-guide/purging.html)
当您在资源(URL)上调用PURGE时,它将从缓存(Varnish)中删除,因此对于同一资源上的下一个GET请求,Varnish将调用后端并缓存其响应。如果您再次在此资源上调用PURGE,它将再次从缓存中逐出。
答案 1 :(得分:0)