如何在 Varnish 中剥离 UTM 标签而不剥离我想要的查询?

问题描述 投票:0回答:0

我正在寻找 Varnish 中规则(正则表达式)的一些帮助,我正在使用它来确保,例如,UTM 标签不会为我收到的每个唯一查询创建一个新的缓存条目。这是我的规则:

    if (req.url ~ "(\?|\&)(utm|gclid|fbclid|mc)(_|=)") {
    set req.url = regsub(req.url, "\?.*", "");
}

这很好用。如果字符串中有另一个我 not 不想删除的查询,问题就来了。例如:如果请求是

https://example/page/?fbclid=45435
,那么规则就可以正常工作。不管
fbclid
部分是什么,相同的页面都是从后端加载的。但是,如果
fbclid
部分出现在 another 查询之后——如果,例如,请求是
https://example/page/?app=346&fbclid=45435
——那么,显然,它也破坏了字符串的第一部分,并返回 /page/ 没有重要的正在处理的查询。 (当然,我已经告诉 Varnish 不要缓存去
?app=
的请求)。

我在这方面不是特别擅长,所以我想确保我以正确的方式思考这个问题。如果我要更改我的规则,使其不查找

&
,那么我上面给出的示例将得到修复。但这也意味着 UTM 标签在我想保留的查询之后停留,并被传递到后端进行缓存。

基本问题:什么是我去除

utm
gclid
fbclid
mc
标签的最佳方式不管它们出现在字符串中的位置,而不摆脱任何其他查询也在里面吗?

谢谢!

caching varnish dynamic-queries
© www.soinside.com 2019 - 2024. All rights reserved.