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