如何忽略网络缓存中的查询参数?

如何忽略网络缓存中的查询参数?

Google Analytics 使用一些查询参数来识别广告系列并进行 cookie 控制。这一切都由 javascript 代码处理。请看以下示例:

http://www.example.com/?utm_source=newsletter&utm_medium=email&utm_ter m=October%2B2008&utm_campaign=promotion

这将通过 JavaScript 设置具有正确活动来源的 cookie。此查询参数可以有多个值,有时是随机值。由于它们用作缓存哈希键,因此在某些情况下缓存性能会严重下降。

我认为缓存服务器上有一个不太难的配置,可以忽略所有查询参数或特定查询参数。我说得对吗?

有人知道创建流行的网络缓存解决方案有多难吗?

我对特定的 Web 缓存解决方案不感兴趣。如果能了解一下您使用的那个解决方案就更好了。

答案1

摆弄缓存并不是解决这个问题的正确方法。

处理此类跟踪的 URL 的“正确”方法是向您的规范 URL 发送 301 重定向(当然,在实际进行任何必要的跟踪之后)。

答案2

我不确定我是否完全理解你的意思,但是:

使用 squid,我相信您可以创建一个 url 正则表达式 ACL,然后使用缓存指令告诉它不要缓存这些请求。

答案3

在 varnish 中,在 vcl_recv 函数中

set req.url = regsub(req.url, "\?.*", "");

不过,您确实需要评估是否要这样做。如果它是由 Varnish 而不是后端提供的,您是否会更改任何统计信息收集流程?

相关内容