0

我有网址

...../suggest?callback=jsonp9999999999999&term=something

我想从 url 中删除callback=jsonp999999999999&,缓存其余部分(...../suggest?term=something)并再次传递完整的 URL (...../suggest?callback=jsonp9999999999998&term=something)到后端。

当第二个请求的格式为 (...../suggest?callback=jsonp000000000000&term=something)时,varnish 必须去掉 callback=jsonp000000000000 并检查缓存是否命中并从缓存中返回结果。

这对内联 C 和 VCL 可行吗?

4

2 回答 2

1

如果查询字符串始终以开头,"callback=jsonp"则搜索其开头(strstr对此有好处)。然后只需找到下一个'&'strchr是这里要使用的功能)。然后将第一部分复制到新缓冲区,并将最后一部分连接到该新缓冲区。

于 2012-02-24T07:18:36.627 回答
1

有可能,您可以像操作 cookie 或其他标头一样更改 req.url 参数。这是一个示例,说明如何在将 Google Analytics 参数发送到您的后端之前去除它们,这里也适用相同的逻辑。

于 2012-02-24T09:15:23.763 回答