Как установить Varnish Cache-Control Заголовки - PullRequest
8 голосов
/ 26 января 2012

Я надеюсь, что кто-то может посоветовать правильный метод получения Varnish для отправки заголовков с контролем кэша.В настоящее время моя конфигурация отправляет "Cache-Control: no-cache" клиентам.

Заранее спасибо всем, кто сможет помочь ...

Ответы [ 3 ]

14 голосов
/ 27 января 2012

Ваш сервер отправляет «Cache-Control: no-cache» в Varnish, что подразумевает две вещи:

  • Varnish не будет хранить ответ в кеше (поэтому следующий поиск не удастся)
  • Ваши клиенты (браузеры и промежуточные прокси-серверы) не будут кэшировать ответы (и запрашивать их снова и снова).

Решение простое: убрать заголовки контроля кэша после извлеченияответ от серверной части (и перед сохранением их в кеше).

В вашем файле vcl выполните:

sub vcl_fetch {
  remove beresp.http.Cache-Control;
  set beresp.http.Cache-Control = "public";
}

Вы можете сделать это только для определенных URL-адресов (переносэто в ( if req.url ~ "" ) логике) и делать более продвинутые вещи.

3 голосов
/ 11 июля 2012

Varnish игнорирует Cache-Control: nocache согласно документации. Вот свидетельство, подтверждающее, что:

http://drupal.org/node/1418908

Чтобы получить такой результат, вы должны определить заголовок Cache-Control. nocache. из своего бэкэнда, а затем сделать недействительным кеш, установить для бэкэнда ответ не кэшируемый или выдать max-age: 0 в другом заголовке (я сейчас забыл имя).

0 голосов
/ 05 июня 2013

У [ivy] есть хороший совет, и / или он немного усложняется, когда вы пытаетесь подчиниться цели сервера для кэширования конечного пользователя (браузера). Я обнаружил, что этот ресурс помогает понять, как настроить Varnish для хранения в кеше дольше, чем указано в браузере ...

https://www.varnish -cache.org / ПРОФ / вики / VCLExampleLongerCaching

...