2

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

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

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

4

2 回答 2

6

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

于 2016-02-25T17:23:29.440 回答
0

在此处输入图像描述

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

于 2016-04-04T14:49:35.700 回答