【发布时间】:2026-01-31 02:00:01
【问题描述】:
恐怕我对 varnish 还很陌生,但我有一个问题,我无法找到任何地方的解决方案(目前): Varnish 设置为缓存 GET 请求。我们有一些请求有很多参数,我们决定将它们传递到请求的正文中。这在我们绕过 Varnish 时工作正常,但是当我们通过 Varnish(用于缓存)时,请求在没有正文的情况下传递,因此 Varnish 后面的服务失败。
我知道我们可以使用 POST,但我们想获取数据。我也知道,如果我们使用传递模式,Varnish 可以传递请求正文,但据我所知,在传递模式下发出的请求不会被缓存。我已经在 url 中添加了一个哈希,这样当一切正常时,我们实际上会从缓存中获取正确的数据(就 url 而言,调用看起来都是一样的)。
现在的问题是“只是”如何重写 vcl_fetch 以将请求正文传递给网络服务器?欢迎任何提示和提示!
提前致谢
乔恩
【问题讨论】:
-
那么您想要带有请求正文的 HTTP GET 请求吗?直到我在这个网站上发现一个问题,我才认为这是可能的:*.com/questions/978061/http-get-with-request-body。这是可能的,但不推荐。我可以想象清漆没有实现这种情况....
-
我知道这是不推荐的,但它是允许的......并且有助于获得圆形 url 长度限制。 varnish 在 pass 模式下支持它,但不缓存结果。似乎他们在获取模式下不支持它(还没有?)......在获取模式下,响应可以被缓存。 :((
标签: varnish