HTTP动词PURGE是幂等的吗?
如果我两次发送相同的PURGE请求,第二次会收到200吗?

我有一个微服务,可以在将消息发布到Rabbit队列之前使Varnish缓存无效。在清除失败的情况下,我们需要记录并继续执行。

队列使用者必须从Varnish缓存中获取资源的最新状态。
如果第一个微服务的第一次清除成功,是否会成功返回第二个微服务的新清除请求(实际从 Varnish 请求资源之前)?

最佳答案

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,它将再次从缓存中逐出。

10-07 14:56