我想知道是否可以在VCL中检查当天的当前时间,以便我可以根据它设置不同的TTL。由于Varnish允许你在CCL中嵌入C,我确信它是可行的,但我想知道它是否可以在vanilla VCL中完成。 如果它只能用C来完成,我真的很感激一个例子(如果写的很简单),因为我不太了解C。
答案 0 :(得分:2)
您无法使用VCL中的日期。让inline-C的东西正确,总是有点棘手,但你可以从:
开始C{
#include <time.h>
#include <sys/time.h>
}C
sub vcl_fetch {
C{
struct timeval tv;
struct tm result;
gettimeofday(&tv, NULL);
localtime_r(& (tv.tv_sec), &result);
/* compare the timeofday with: result.tm_hour, result.tm_min, result.tm_sec */
if ( result.tm_hour < 12 ) {
/* in the morning, only 1 minute caching */
VRT_l_obj_ttl(sp, 60);
} else {
/* after noon, 1 hour caching */
VRT_l_obj_ttl(sp, 3600);
}
}C
# do other stuff here
}
答案 1 :(得分:0)
i use the code "C{#include <time.h>}C" in "default.vcl",an error occurred at the start.
Message from C-compiler:
./vcl.TfBe17Rg.c:429:21: time.h: No such file or directory
./vcl.TfBe17Rg.c:430:23: string.h: No such file or directory
Running C-compiler failed, exit 1
&#13;