【发布时间】:2021-08-27 10:50:36
【问题描述】:
我需要根据从后端收到的响应标头而不是基于客户端请求的 URL 来生成/存储缓存密钥。
这样做的主要原因是:如果请求的东西不可用,我有一个后端逻辑可以用一些不同的数据回复客户端。
例如:
请求:example.com/foo/102030?names=test1
现在,我的后端检查 test1 是否存在于 102030,如果没有,它会检查 102030 是否有特殊标签 = Y :基本上告诉它必须寻找其他匹配的对象。
因此,在这种情况下,再次使用数据支持对客户的回复,可以通过example.com/foo/000000?names=test1. 访问
所以,现在的问题是,如果 example.com/foo/000000?names=test1 附带一些其他请求,varnish 将其视为基于 URL 的不同请求,但实际上,我需要使用 example.com 提供缓存中已经存在的相同数据/foo/000000?names=test1.
目前,我使用后端的一些正则表达式语法来禁止,所以在这种情况下,我可以轻松地使以/foo/000000?names=test1 存储的对象无效。
那么,有没有一种方法可以让我根据响应头信息存储缓存键?
【问题讨论】:
标签: varnish varnish-vcl