Здесь есть несколько хороших ответов на этот вопрос: NGINX: игнорирование определенных параметров URL для целей кэширования
Но я не могу заставить его работать. Я запускаю установку wordpress и вот мое отображение:
map $args $cachestep1 {
default $args;
~^(fbclid=[^&]*&?)(.*)$ $2;
~^([^&]*)(&fbclid=[^&]*)(&?.*)$ $1$3;
}
И мой cachekey:
fastcgi_cache_key $scheme$host$request_method$uri$cachestep1;
Я все еще получаю cache MISS на точно таких же URL с разными fbclids.
Похоже, что третий regex немного неправильный - ^([^&]*)(&fbclid=[^&]*)(&?.*)$
не будет соответствовать строке типа a=c&c=d&fbclid=trimm&xxx=yyy
.
Его можно заменить на ^(.*)(&fbclid=[^&]*)(&?.*)$
. Попробуйте сами на regex101.com.
Несколько небольших улучшений:
(?:...)
.*?
- не жадная версия .*
(как можно меньше символов)map $args $cachestep1 {
default $args;
~^(?:fbclid=[^&]*&?)(.*)$ $1;
~^(.*?)(?:&fbclid=[^&]*)(&?.*)$ $1$2;
}