如何在清漆清除中返回禁止物体的长度?

如何在清漆清除中返回禁止物体的长度?

我在 Debian 中使用 Varnish 6.0 LTS

我从这里使用 magento2 vcl 6:

https://github.com/magento/magento2/blob/2.4-develop/app/code/Magento/PageCache/etc/varnish6.vcl

当我发出带有标签模式的 curl 请求时,我希望得到的响应是:

“发现并清除了 X 个对象命中”

vcl 的部分在这里:

   if (req.http.X-Magento-Tags-Pattern) {
          ban("obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern);
        }
        if (req.http.X-Pool) {
          ban("obj.http.X-Pool ~ " + req.http.X-Pool);
        }
 #Here i would like to return the Ban Purged Hits counter
        
return (synth(200, "You have Purged X items"));

答案1

vmod_xkey

我建议你使用vmod_xkey。这是一个开源 Varnish 模块,可执行基于标签的失效。你可以从下载源代码https://github.com/varnish/varnish-modules

但是,您必须从源代码编译该模块。

成功安装 VMOD 后,您可以在此处找到 API:https://github.com/varnish/varnish-modules/blob/master/src/vmod_xkey.vcc

不过有一些限制:目前您使用X-Magento-Tags关键字标记响应。这将不得不改为xkey关键字。希望您可以在 Magento 中进行此更改。

完成此操作后,您可以调用set req.http.n-gone = xkey.purge(req.http.X-Magento-Tags-Pattern);req.http.n-gone标题包含已清除项目的数量。

vmod_ykey

如果vmod_xkey限制太多,您也可以使用vmod_ykey,这是 Varnish Enterprise 的替代方案。它提供了更大的灵活性。

https://docs.varnish-software.com/varnish-cache-plus/vmods/ykey/用于文档。

正如文档中提到的,您可以按如下方式标记内容:

sub vcl_backend_response {
    ykey.add_header(beresp.http.X-Magento-Tags);
    ykey.add_header(beresp.http.X-Pool);
}

可以通过 进行无效化set req.http.n-gone = ykey.purge_header(req.http.X-Magento-Tags-Pattern);

免责声明: 清漆企业是商业软件,需要许可证。但是,您可以使用官方机器映像在云端。这允许您按现收现付的方式支付许可证费用。开发者版本收费较低的 AWS 图像。

相关内容