按下 CTRL+F5 或 CTRL+R 时清除 Varnish 中的内容

按下 CTRL+F5 或 CTRL+R 时清除 Varnish 中的内容

我想设置 Varnish 来清除缓存中的内容并在按下 CTRL+R 或 CTLR+F5 时直接从后端获取它。

我使用这些规则,但只有按下 CTRL+F5 时才会从后端获取内容。当我按下 F5 时,我才会从缓存中获取数据。

acl CTRLF5 {
   "127.0.0.1";
}

sub vcl_hit {

  if (client.ip ~ CTRLF5) {
    if (req.http.pragma ~ "no-cache" || req.http.Cache-Control ~ "no-cache")
    {
      set obj.ttl = 0s;
      return(pass);
    }
    else { return(deliver); }
  }
  else { return(deliver); }
}

答案1

可以通过下列语句实现:

清漆 2.1.x

    if (req.http.Cache-Control ~ "no-cache"){
    purge_url(req.url);
    }

清漆 3.x

    if (req.http.Cache-Control ~ "no-cache"){
    ban(req.url);
    }

相关内容