目前我在运行大约 30-40 个不同网站的服务器上运行 Varnish。所有这些网站都使用相同的库来处理请求(每个网站都有自己的域)。然而,其中一些网站非常简单,可以完全缓存。我想要做的是在项目/网站(某些 header )中启用一个标志,告诉 varnish 在交付后缓存请求。这样的构造是否可行,因为我不想为每个可以完全缓存的项目编辑 VCL 并向 vcl_fetch 添加一个条目,例如:
if (req.http.host ~ "<website>")
{
unset req.http.cookie;
return (lookup)
}
有没有合适的方法来做到这一点?我确实看过 Varnish 流程图,但无法提出一个好的解决方案。
提前致谢!
最佳答案
希望对您有所帮助。在下面的示例中,自定义 header 用作条件。
sub vcl_fetch {
if (req.http.Custom-Header == "www.site.com" {
set beresp.ttl = [...]
[...]
}
elsif (req.http.Custom-Header == "www.site2.com" {
set beresp.ttl = [...]
}
else {
[...]
}
return(deliver);
}
关于php - 基于 header 的 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726716/