rabbitmq - Varnish 中的 HTTP 方法 PURGE 是幂等的吗?

标签 rabbitmq varnish microservices http-method purge

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

我有一个微服务,它在将消息发布到兔子队列之前使 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,它将再次从缓存中逐出。

关于rabbitmq - Varnish 中的 HTTP 方法 PURGE 是幂等的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632607/

相关文章:

java - SimpleMessageListenerContainer 停止后无法恢复

php - 没有 librabbitmq,安装rabbitmq pecl brew php 时

apache - 当网站在 Tomcat 前使用 Apache Varnish 配置时获取用户机器的 IP 地址

ruby-on-rails - Varnishd 是用于 Rails 的正确缓存解决方案吗?

java - Spring微服务之间的通信

linux - 兼容 erlang 和 rabbitmq rpm

java - 将 curl 调用转换为 java urlconnection 调用

根据状态代码清空缓存项目

c# - 微服务架构数据库回滚

events - 每个微服务的 CQRS 事件源和自己的数据库