我的 php 脚本正在发送一个标头X_Cache_ttl: 1h
,在我的 varnish 配置文件中有
sub vcl_fetch
{
if(beresp.http.X-Cache-ttl){
set beresp.ttl = beresp.http.X-Cache-ttl;
}
}
但是当我尝试启动清漆时,带有 set 命令的行导致清漆失败。
在我得到的日志中
Expression has type STRING, expected DURATION
('input' Line 116 Pos 34) -- ('input' Line 116 Pos 56)
set beresp.ttl = beresp.http.X-Cache-ttl;
如何转换X-Cache-ttl
为持续时间以便动态设置 TTL?
我想避免多个 if 语句类似于
if(beresp.http.X-Cache-ttl == "60s") {
set beresp.ttl = 60s;
}
if(beresp.http.X-Cache-ttl == "1h") {
set beresp.ttl = 1h;
}
如果重要的话,我在 centos 6 上使用 varnish 3.0.3。
该
vmod_std
模块有一个功能可以满足您的需求。import std;
在 VCL 的顶部,那么这应该可以工作:..
1h
如果未设置标头,则这是您的默认设置。根据 Varnish 文档,您可以使用
Cache-Control
标头。https://github.com/varnishcache/varnish-cache/blob/master/doc/sphinx/users-guide/increasing-your-hitrate.rst