Por que o Varnish não está armazenando em cache minha página de índice corretamente?

1

Eu tenho um Varnish configurado na frente do Apache 2 no Ubuntu 11.10. Estou usando este arquivo VCL:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

sub vcl_recv {

  if (req.url ~ "^/web") {
    unset req.http.cookie;
  }

  if (req.url ~ "administration" ||
    req.url ~ "preview"
  ) {
    return(pass);
  }

  if (req.http.Cookie) {
    set req.http.Cookie = ";"+req.http.Cookie;
    set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";");
    set req.http.Cookie = regsuball(req.http.Cookie, ";(mag_header)=", "; =");
    set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", "");
    set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", "");

    if (req.http.Cookie == "") {
      remove req.http.Cookie;
    }
  }

  if (req.url ~ "\.(html|gif|jpg|jpeg|png|js|css)$") {
    unset req.http.cookie;
    return(lookup);
  }

  if (req.http.x-forwarded-for) {
    set req.http.X-Forwarded-For =
    req.http.X-Forwarded-For + ", " + client.ip;
  }
  else {
    set req.http.X-Forwarded-For = client.ip;
  }
  if (req.http.x-forwarded-host) {
    set req.http.X-Forwarded-Host =
    req.http.X-Forwarded-Host + ", " + server.ip;
  }
  else {
    set req.http.X-Forwarded-Host = server.ip;
  }
  return(lookup);
}

sub vcl_hash {
  hash_data(req.http.cookie);
}

sub vcl_fetch {
  set beresp.ttl =30m;
}

O valor do cookie mag_header só pode ter um de três valores, minimizando quantas variações serão armazenadas em cache. No entanto, estou vendo muitos erros na página inicial (cerca de 7 por 60 segundos), quando isso deve ser armazenado em cache por 30 minutos.

Alguma ideia de por que não está fazendo cache?

Felicidades, Mark

EDITAR

Abaixo está um pedido feito para a home page (infelizmente eu não tenho certeza se este é um bom exemplo do meu problema ou não, me avise se eu deveria pegar outro):

29 RxHeader     c User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
29 RxHeader     c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
29 RxHeader     c Referer: http://www.vmagazine.com/site/content/451/the-discreet-charm-of-kate-upton
29 RxHeader     c Accept-Encoding: gzip,deflate,sdch
29 RxHeader     c Accept-Language: en-US,en;q=0.8
29 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
29 RxHeader     c Cookie: vmag_header=vmag; __utma=232335640.704196202.1357394712.1357394712.1357394712.1; __utmb=232335640.25.10.1357394712; __utmc=232335640; __utmz=232335640.1357394712.1.1.utmcsr=popwatch.ew.com|utmccn=(referral)|utmcmd=referral|utmcct=/2013/01/04/krist
29 VCL_call     c recv lookup
29 VCL_call     c hash
29 Hash         c vmag_header=vmag
29 Hash         c /
29 Hash         c www.vmagazine.com
29 VCL_return   c hash
29 HitPass      c 1682448674
29 VCL_call     c pass pass
29 Backend      c 19 default default
29 TTL          c 1682448965 RFC 120 -1 -1 1357394808 0 1357394807 0 0
29 VCL_call     c fetch
29 TTL          c 1682448965 VCL 1800 -1 -1 1357394808 -0
29 TTL          c 1682448965 VCL 120 -1 -1 1357394808 -0
29 VCL_return   c hit_for_pass
29 ObjProtocol  c HTTP/1.1
29 ObjResponse  c OK
29 ObjHeader    c Date: Sat, 05 Jan 2013 14:06:47 GMT
29 ObjHeader    c Server: Apache/2.2.20 (Ubuntu)
29 ObjHeader    c X-Powered-By: PHP/5.3.6-13ubuntu3.9
29 ObjHeader    c Set-Cookie: vmag_header=vmag; path=/
29 ObjHeader    c Vary: Accept-Encoding
29 ObjHeader    c Content-Encoding: gzip
29 ObjHeader    c Content-Length: 16315
29 ObjHeader    c Content-Type: text/html
29 ObjHeader    c X-Pad: avoid browser bug
29 Gzip         c u F - 16315 77445 80 80 130452
29 VCL_call     c deliver deliver
29 TxProtocol   c HTTP/1.1
29 TxStatus     c 200
29 TxResponse   c OK
29 TxHeader     c Server: Apache/2.2.20 (Ubuntu)
29 TxHeader     c X-Powered-By: PHP/5.3.6-13ubuntu3.9
29 TxHeader     c Set-Cookie: vmag_header=vmag; path=/
29 TxHeader     c Vary: Accept-Encoding
29 TxHeader     c Content-Encoding: gzip
29 TxHeader     c Content-Type: text/html
29 TxHeader     c X-Pad: avoid browser bug
29 TxHeader     c Content-Length: 16315
29 TxHeader     c Accept-Ranges: bytes
29 TxHeader     c Date: Sat, 05 Jan 2013 14:06:47 GMT
29 TxHeader     c X-Varnish: 1682448965
29 TxHeader     c Age: 0
29 TxHeader     c Via: 1.1 varnish
29 TxHeader     c Connection: keep-alive
29 Length       c 16315
29 ReqEnd       c 1682448965 1357394807.567663431 1357394807.963178158 0.000065088 0.395375967 0.000138760
    
por Mark Davies 04.01.2013 / 17:41

1 resposta

0

O problema foi que houve uma chamada session_start () no meu código, que adicionou um cookie PHP_SESSION, o que significa que o cache nunca foi atingido.

    
por 07.01.2013 / 15:56