我正在尝试创建一个 Varnish 响应标头,它可以帮助我调试缓存的状态。我想创建一个标头,显示请求经过的数据中心和对象的年龄。就像是:
X-Fastly-Age: VIE:2311s FRA:0s
这意味着该对象被缓存在VIE
数据中心(屏蔽)中,并且FRA
必须从VIE
.
第二个请求将返回如下内容:
X-Fastly-Age: VIE:2311s FRA:133s
我试图设置这个:
set beresp.http.X-Fastly-Age = beresp.http.X-Fastly-Age " " req.http.edge-geo-datacenter ":" obj.entered;
这会起作用,但问题是:
beresp.http
不能写入vcl_hit
obj.entered
不可用vcl_fetch
所以基本上我似乎没有地方生成这个标题。
如何做到这一点?
编辑:
我设法在以下位置运行它vcl_deliver
:
set resp.http.X-Fastly-Age = resp.http.X-Fastly-Age " " server.datacenter ":" obj.entered;
得到:
> x-fastly-age: (null) DCA:0.001 FRA:0.001
它有两个问题:
- 进入
(null)
第一个电话 - 如果标题为空,有没有办法不预先添加标题? - 边缘时间 (FRA) 永远不会改变并保持在
0.001
. 所以它似乎即使使用 obj.entered 也被缓存并且永远不会改变?