Назад | Перейти на главную страницу

Как настроить Varnish (и, если возможно, Nginx) для использования ключа динамического кеша?

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

Чтобы быть более понятным, я знаю, что оба они изначально используют URL-адрес страницы в качестве ключа кеша. То есть они берут http://example.org/some/page в качестве ключа и сохраните кешированную копию этой страницы. При повторном запросе того же URL-адреса возвращается кешированная страница. Таким образом, для каждого URL будет только одна копия контента.

Что мне нужно сделать, так это изменить это поведение, чтобы Varnish и / или Nginx использовали ключ кеша, который не только содержит URL-адрес, но и некоторые значения, которые можно найти в файлах cookie. В псевдокоде логика должна быть следующей:

$cookies = ["one", "two", "three"]

if(<none of the cookies is set>) {
  // Cookies are not set
  // Let the page load dynamically, so that cookies can be set
  disable_caching()
}
else {
  // Cookies are set
  // Create a dynamic cache key, taking the cookies into account
  $cache_key = $page_url + $cookies["one"] + $cookies["two"] + $cookies["three"]
  load_cached_page($cache_key)
}

Я искал такое решение, но почти не знаю Varnish и Nginx и не мог найти примера того, как этого можно было бы достичь. Любые предложения или ссылки на примеры приветствуются. Заранее спасибо за помощь.