Mein PHP-Skript sendet einen Header X_Cache_ttl: 1h
und in meiner Lackkonfigurationsdatei habe ich
sub vcl_fetch
{
if(beresp.http.X-Cache-ttl){
set beresp.ttl = beresp.http.X-Cache-ttl;
}
}
Aber die Zeile mit dem Befehl set führt dazu, dass der Lack fehlschlägt, wenn ich versuche, ihn zu starten.
im log bekomme ich
Expression has type STRING, expected DURATION
('input' Line 116 Pos 34) -- ('input' Line 116 Pos 56)
set beresp.ttl = beresp.http.X-Cache-ttl;
Wie konvertiere ich X-Cache-ttl
in eine Dauer, damit ich die TTL dynamisch einstellen kann?
Ich möchte mehrere if-Aussagen ähnlich wie vermeiden
if(beresp.http.X-Cache-ttl == "60s") {
set beresp.ttl = 60s;
}
if(beresp.http.X-Cache-ttl == "1h") {
set beresp.ttl = 1h;
}
Wenn es darauf ankommt, verwende ich Lack 3.0.3 für Centos 6.
Antworten:
Das
vmod_std
Modul verfügt über eine Funktion, die genau das tun soll, wonach Sie suchen.import std;
Am oberen Rand der VCL sollte dies funktionieren:..wobei das
1h
Ihre Standardeinstellung ist, wenn der Header nicht gesetzt ist.quelle
vcl 4.0;
muss es oben in der VCL-Datei sein, und dannimport std;
Gemäß der Lackdokumentation können Sie den
Cache-Control
Header verwenden.https://github.com/varnishcache/varnish-cache/blob/master/doc/sphinx/users-guide/increasing-your-hitrate.rst
quelle