gpt4 book ai didi

caching - 忽略带漆的utm_ *值?

转载 作者:行者123 更新时间:2023-12-03 17:45:04 25 4
gpt4 key购买 nike

我可以在从缓存中提取匹配对象之前“忽略”查询字符串变量,但实际上不将其从URL中删除给最终用户吗?

例如,所有市场营销的utm_sourceutm_campaignutm_*值都不会更改页面的内容,它们在每个广告系列之间都相差很大,并且被我们所有的客户端跟踪所使用。

因此,这也意味着该URL无法在客户端更改,但应以某种方式在缓存中对其进行“规范化”。

本质上我想要所有这些...
http://example.com/page/?utm_source=googlehttp://example.com/page/?utm_source=facebook&utm_content=123http://example.com/page/?utm_campaign=usa
...所有访问HIT的http://example.com/page/缓存

但是,此URL会引起MISS(因为param不是utm_ * param)
http://example.com/page/?utm_source=google&variation=5
将触发缓存
http://example.com/page/?variation=5
另外,请记住,用户看到的URL必须保持不变,如果没有参数或类似的解决方案,我将无法重定向到某些内容。

最佳答案

因此,我将添加一个免责声明,该正则表达式可能并不完美,但它应该可以很好地工作:

sub vcl_recv {  
set req.url = regsuball(req.url, "\?(utm_[^=&]*=[^&=]*&?)+", "?");
set req.url = regsuball(req.url, "&(utm_[^=&]*=[^&=]*(&|$))+", "\2");
set req.url = regsub(req.url, "\?$", "");

return (pass);
}

这应该删除所有以 utm_开头的查询参数。我使用了三个正则表达式使其更清晰易读。

第一个 regsuball删除查询字符串开头的所有 utm_参数。它在 utm_之后立即寻找一个或多个 ?参数。第二个 regsuball删除不在查询字符串开头的所有 utm_参数。

如果删除完 ?参数后没有剩余查询参数,则第三个正则表达式将通过删除 utm_清理URL。

两个正则表达式都必须使用 ()+,因为这将匹配一个或多个连续的 utm_参数(否则将不匹配)。

结果示例:
Source URL: /?utm_track=1&utm_test2=hey&test=utm_blah&utm_source=google&variation=5&utm_query=abc&utm_test7=yes
Maps to: /?test=utm_blah&variation=5

Source URL: /?variation=5&utm_test1=abc&utm_test2=def&blah=1
Maps to: /?variation=5&blah=1

关于caching - 忽略带漆的utm_ *值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com