在Varnish中,HTTP方法PURGE是幂等的吗?

时间:2016-02-25 16:14:18

标签: rabbitmq varnish microservices http-method purge

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

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

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

2 个答案:

答案 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)

enter image description here

是的,多重PURGE请求返回200。