【问题标题】:How to instruct varnish to generate the cache key based on response header data如何指示 varnish 根据响应头数据生成缓存键
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2015-06-18
      • 2016-06-22
      相关资源
      最近更新 更多