0

我使用 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 片段,也不会发送请求。相反,它在缓存主页时存储在主页本身中,并在进行查找时从那里获取。我想知道如何在每次请求主页时从后端获取片段,同时从缓存中提供主页的其余内容。

4

1 回答 1

0

放入子程序对我有用unset resp.http.Etag;vcl_deliver

于 2015-08-01T06:26:37.397 回答