我可以根据一天中的时间在Varnish Cache中设置不同的TTL

时间:2011-12-31 10:07:56

标签: caching varnish

我想知道是否可以在VCL中检查当天的当前时间,以便我可以根据它设置不同的TTL。由于Varnish允许你在CCL中嵌入C,我确信它是可行的,但我想知道它是否可以在vanilla VCL中完成。 如果它只能用C来完成,我真的很感激一个例子(如果写的很简单),因为我不太了解C。

2 个答案:

答案 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)

&#13;
&#13;
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;
&#13;
&#13;