Nginx
NGINX:忽略用於 FastCGI 記憶體目的的 fbclid 參數
這裡有對這個問題的一些很好的回答: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上嘗試一下。幾個小的改進:
- 不擷取組
(?:...)
.*?
- 不貪婪的版本.*
(盡可能少的字元)map $args $cachestep1 { default $args; ~^(?:fbclid=[^&]*&?)(.*)$ $1; ~^(.*?)(?:&fbclid=[^&]*)(&?.*)$ $1$2; }