我是 Varnish 的新手,我希望它已经可以“开箱即用”地做到这一点,但在考虑在生产中使用它之前,我想澄清一下:
这是我的设置:
- 我在同一台机器上运行多个网站,这些网站因子域名而异(即 user1.example.com、user2.example.com 等)
- 每个“站点”都有一个同名的个人资料图片(即 user1.example.com/profile.png、user2.example.com/profile.png)
Varnish 会将它们识别为单独的资源并相应地缓存它们吗?或者我需要在 VCL 中更改某些内容以告诉它在查找缓存命中时包含完整的主机 URL?
答案1
它们将被单独缓存。
默认代码vcl_hash
控制着这一点:
sub vcl_hash {
set req.hash += req.url;
if (req.http.host) {
set req.hash += req.http.host;
} else {
set req.hash += server.ip;
}
return (hash);
}
如您所见,如果主机名存在,则将其包含在哈希中,如果不存在,则包含服务器的 IP。