如何指示清漆根据响应header数据生成缓存键

How to instruct varnish to generate the cache key based on response header data

我需要根据从后端收到的响应 header 来缓存键 generation/store,而不是根据 client-side 请求的 URL。

这样做的主要原因是:如果请求的东西不可用,我有一个后端逻辑可以用一些不同的数据回复客户端。

例如: 要求:example.com/foo/102030?names=test1 现在,我的后端检查是否存在 102030 的 test1,如果不存在,它会检查 102030 是否有特殊标签 = Y:基本上告诉我们必须寻找其他匹配项 object.

因此,在这种情况下,再次向客户提供数据支持回复,可以通过 example.com/foo/000000?names=test1.

访问

所以,现在的问题是,如果 example.com/foo/000000?names=test1 附带一些其他请求,varnish 认为这是基于 URL 的不同请求,但实际上,我需要提供相同的数据已经存在于 Cache with example.com/foo/000000?names=test1.

目前,我禁止使用来自后端的一些正则表达式语法,所以在这种情况下,我可以轻松地使存储在 /foo/000000?names=test1 而不是另一个的 object 无效。

那么,有没有一种方法可以根据响应 header 信息存储缓存键?

不幸的是,您无法做到这一点。只有请求信息才能用于创建缓存键。

这是设计使然,因为传入请求只有自己的请求属性,它们可以呈现给 Varnish 以识别它们希望检索的资源。