这里有对这个问题的一些很好的回答:NGINX: Ignoring certain URL Parameters for Cache Purposes
但我似乎无法让它发挥作用。我正在运行 wordpress 安装,这是我的映射:
map $args $cachestep1 {
default $args;
~^(fbclid=[^&]*&?)(.*)$ $2;
~^([^&]*)(&fbclid=[^&]*)(&?.*)$ $1$3;
}
还有我的缓存键:
fastcgi_cache_key $scheme$host$request_method$uri$cachestep1;
我仍然在具有不同 fbclids 的完全相同的 url 上获得缓存 MISS。
看起来第三个正则表达式有点错误 -
^([^&]*)(&fbclid=[^&]*)(&?.*)$
不会匹配像a=c&c=d&fbclid=trimm&xxx=yyy
.它可以替换为
^(.*)(&fbclid=[^&]*)(&?.*)$
. 在regex101.com上尝试一下。几个小的改进:
(?:...)
.*?
- 不贪婪的版本.*
(尽可能少的字符)