如何指示清漆根据响应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 以识别它们希望检索的资源。
我需要根据从后端收到的响应 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 以识别它们希望检索的资源。