Кэш лака 4.1 ведет себя странно — Кэширует мою целевую страницу один раз, а затем снова не кэширует — КОД VCL

#caching #varnish #varnish-vcl

Вопрос:

Поэтому я установил кэш лака 4.1 на свою машину Ubuntu.

Лак находится перед моим Nginx и за моим AWS ELB.

В настоящее время я пытаюсь кэшировать страницу, на которой есть файлы cookie Google analytics, а также файл cookie, в котором хранится выбор валюты для посетителей, не вошедших в систему, идентификатор сеанса php и форма, которую посетитель может при необходимости отправить по ПОЧТЕ. Страница кэшируется нормально, как только я перезапущу лак, но как только срок действия кэша истечет, я закрою и снова открою браузер и попытаюсь снова попасть в кэш после истечения срока действия кэша, я продолжаю получать промахи, независимо от того, сколько раз я обновляю страницу. Я не уверен, что происходит, но лак начинает действовать. Ниже приведен мой файл по умолчанию.vcl , поскольку из того, что я знаю, страница всегда должна кэшироваться с помощью return(хэш), но, похоже, она отлично кэшируется после перезапуска. P. S Я сохраняю кэш с помощью опции хранения и у меня его много, включая много памяти, так что это не проблема.

 # new 4.0 format. vcl 4.0; # Default backend definition. Set this to point to your content server. backend default {  .host = "127.0.0.1";  .port = "8000"; }  sub vcl_recv {  .  set req.http.X-Forwarded-For = req.http.X-Forwarded-For;   if(req.url ~ "/landing-page$"){  #unset req.http.cache-control;  #unset req.http.pragma;  if(req.method == "GET"){ # if method is get   # From my knowledge return hash should cache the page under all circumstances   return(hash); #override varnish settings to cache this page even though it has cookies   }  }   }  sub vcl_backend_response {    #following enables gzip also compress the content before storing it in cache  if (bereq.url ~ "/") {    set beresp.do_esi = true; #enable esi edge side includes  if(bereq.url ~ ".(png|gif|ico|jpg|jpeg)$") {  unset beresp.http.cache-control;  set beresp.http.cache-control="s-maxage=0";  } else { # else not an image gzip it  set beresp.do_gzip = true; #gzip  }  }   if(bereq.url ~ "/landing-page$") {  unset beresp.http.cache-control;  unset beresp.http.pragma;  unset beresp.http.expires;  set beresp.http.cache-control = "s-maxage=120";  set beresp.ttl = 120s;  }   }  sub vcl_deliver {  #debug hit miss  if(obj.hits gt; 0) {  set resp.http.X-cache-vcb = "HIT";  } else {  set resp.http.X-cache-vcb = "MISS";   }  }    

Заголовки моих Ответов

 HTTP/2 200 OK date: Tue, 26 Oct 2021 12:53:35 GMT content-type: text/html; charset=UTF-8 server: nginx x-content-type-options: nosniff strict-transport-security: max-age=31536000; includeSubDomains content-security-policy: upgrade-insecure-requests; frame-ancestors 'self' referrer-policy: no-referrer-when-downgrade cache-control: s-maxage=120 content-encoding: gzip vary: Accept-Encoding x-varnish: 721758 age: 0 via: varnish x-cache-vcb: MISS accept-ranges: bytes X-Firefox-Spdy: h2   

Request Headers

 GET /landing-page HTTP/2 Host: www.tester.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0 Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br DNT: 1 Connection: keep-alive Cookie: csess=r8ecdekj6mq6vmnru8g364mav3; _gcl_au=1.1.1961255.1635252; _ga_YYH600NN=GS1.1.1635252.1.1.1635252.59; _ga=GA1.1.1510215.1635252 Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 TE: trailers