varnish 缓存不适用于 ajax 调用

varnish 缓存不适用于 ajax 调用
if (req.url ~ "do_ajax.php" && req.request == "GET") {
      return (lookup);
}

我将此行放在 varnish.vcl 配置中,但是在响应标头中得到了此标头:

no-cache, must-revalidate, max-age=0

我也尝试过:

if (req.url ~ "do_ajax.php" && req.request == "GET") {
      return (hash);
}

但是,除非我删除返回(哈希),否则 varnish 无法重新启动。

现在,我想知道 varnish 配置文件中是否有一行强制所有 ajax 调用不接受缓存,第二件我不明白的事情是为什么我在响应标头中得到它,难道不应该是客户端在请求标头中发送它吗?为什么服务器会返回这个?

答案1

正如您在另一篇帖子中提到的那样:您可能正在使用过时的 Varnish 版本。这也许可以解释为什么 VCL 语法不起作用。

请确保你使用的是 Varnish 6 或 Varnish 7。请参阅https://www.varnish-software.com/developers/downloads/#linux-packages根据您所使用的 Linux 发行版查看安装程序列表。

我也在您发表的另一篇文章中提供了 VCL 解决方案。

相关内容