如何配置 Varnish(如果可能的话还有 Nginx)以使用动态缓存键?

如何配置 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 知之甚少,也找不到如何实现的示例。欢迎提供任何建议或示例链接。提前感谢你的帮助。

相关内容