0

Varnish 4.0.3 を使用したいです。
そして、Cookie が特定のキーと値を持つかどうかのキャッシング プロセスを分割したいと考えています。

ユーザーがマイページにアクセスしたときに、ブラウザに「loged_in=true」Cookie がある場合、ページをキャッシュしたくありません。また、Cookie がない場合は、マイページをキャッシュしたいと考えています。

しかし、両方の設定が機能していません。
まったくキャッシュされません。

さらに、ユーザーが「カテゴリ」ページにアクセスすると、ワニスはページを正しくキャッシュします。

これが私の default.vcl です。
誰か私に何が悪いのか教えてくれますか?

vcl 4.0;
import directors;

backend ap1 {
  .host = "192.168.0.1";
  .port = "80";
  .first_byte_timeout = 200s;
  .probe = {
         .url = "/";
         .interval = 5s;
         .timeout = 1 s;
         .window = 5;
         .threshold = 3;
         .initial = 1;
  }
}

backend ap2 {
  .host = "192.168.0.2";
  .port = "80";
  .first_byte_timeout = 200s;
  .probe = {
         .url = "/";
         .interval = 5s;
         .timeout = 1 s;
         .window = 5;
         .threshold = 3;
         .initial = 1;
  }
}

sub vcl_init{
  new ws_hash = directors.hash();
  ws_hash.add_backend(ap1, 1.0);
  ws_hash.add_backend(ap2, 1.0);
  new ws_rand  = directors.random();
  ws_rand.add_backend(ap1, 1.0);
  ws_rand.add_backend(ap2, 1.0);
}

sub vcl_recv{
  if( (req.url ~ "(category)") ) {
    // Cache
    set req.backend_hint = ws_hash.backend(req.url + ":" + req.http.host);
    return(hash);
  }

  if( (req.url ~ "(mypage)") ) {
    if (req.http.Cookie ~ "(loged_in=true)" ) {
      // NO Cache
      set req.backend_hint = ws_rand.backend();
      return(pass);
    }

    // Cache
    set req.backend_hint = ws_hash.backend(req.url + ":" + req.http.host);
    return(hash);
  }

  // NO Cache
  set req.backend_hint = ws_rand.backend();
  return(pass);
}

sub vcl_deliver {
    if (obj.hits > 0) {
       set resp.http.V-Cache = "HIT";
    } else {
       set resp.http.V-Cache = "MISS";
    }
}
4

0 に答える 0