HTTP 动词 PURGE 是幂等的吗?如果我两次发送相同的 PURGE 请求,我第二次会收到 200 吗?
我有一个微服务,它在将消息发布到兔子队列之前使清漆缓存无效。如果清除失败,我们只需要记录并继续执行。
队列消费者必须从 Varnish 缓存中获取资源的最新状态。如果第一个微服务的第一次清除成功,来自第二个微服务的新清除请求(在实际从 varnish 请求资源之前)是否会返回成功?
HTTP 动词 PURGE 是幂等的吗?如果我两次发送相同的 PURGE 请求,我第二次会收到 200 吗?
我有一个微服务,它在将消息发布到兔子队列之前使清漆缓存无效。如果清除失败,我们只需要记录并继续执行。
队列消费者必须从 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,它将再次从缓存中逐出。