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