我使用 ESI 不缓存页面片段。为了不缓存我的片段,我在 vcl 文件中编写了以下配置:
sub vcl_backend_response{
set beresp.do_esi = true;
if (bereq.url ~ "/fragment") {
set beresp.uncacheable = true;
return (deliver);
}
}
当 varnish 第一次从后端获取整个页面时,它会发送单独的“/fragment”请求并将其放在页面的适当位置。但是在刷新页面时,varnish 只对主页进行请求,并在缓存中找到它。然后它不会在此页面中查找 esi 片段,也不会发送请求。相反,它在缓存主页时存储在主页本身中,并在进行查找时从那里获取。我想知道如何在每次请求主页时从后端获取片段,同时从缓存中提供主页的其余内容。