我的 php 脚本正在发送一个标头X_Cache_ttl: 1h
,在我的清漆配置文件中我有
sub vcl_fetch
{
if(beresp.http.X-Cache-ttl){
set beresp.ttl = beresp.http.X-Cache-ttl;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试启动它时,带有 set 命令的行导致 varnish 失败。
在我得到的日志中
Expression has type STRING, expected DURATION
('input' Line 116 Pos 34) -- ('input' Line 116 Pos 56)
set beresp.ttl = beresp.http.X-Cache-ttl;
Run Code Online (Sandbox Code Playgroud)
如何转换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;
}
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我在 centos 6 上使用 varnish 3.0.3。
Sha*_*den 11
该vmod_std
模块有一个功能,应该做你正在寻找的。
import std;
在 VCL 的顶部,那么这应该可以工作:
sub vcl_fetch
{
set beresp.ttl = std.duration(beresp.http.X-Cache-ttl, 1h);
}
Run Code Online (Sandbox Code Playgroud)
..1h
如果未设置标题,则这是您的默认值。
归档时间: |
|
查看次数: |
4077 次 |
最近记录: |