Могу ли я установить другой TTL в Varnish Cache в зависимости от времени дня - PullRequest
0 голосов
/ 31 декабря 2011

Я хотел бы знать, возможно ли проверить текущее время дня в VCL, чтобы я мог установить другой TTL в зависимости от него. Поскольку Varnish позволяет вам встраивать C в VCL, я уверен, что это выполнимо, но я хотел бы знать, можно ли это сделать в vanilla VCL. Если бы это можно было сделать только с C, я был бы очень признателен за пример (если его легко написать), так как я не очень много знаю C.

Ответы [ 2 ]

2 голосов
/ 07 января 2012

Вы не можете работать с датами в VCL. Это всегда сложно сделать правильно, встроенный 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
}
0 голосов
/ 27 января 2016

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
...