我有一个Nginx配置,其/
位置的代码如下:
location = / {
gzip_proxied any;
gzip on;
gzip_types text/xml text/plain text/css text/javascript application/javascript;
gzip_disable (gozilla|traviata);
gzip_min_length 1400;
gzip_comp_level 9;
proxy_cache index_cache;
proxy_pass http://nodejs;
proxy_cache_key $proxy_host$uri?$arg_id&$arg_toggle-on&$arg_toggle-off;
set $nocache 0;
if ($arg_id = "") {
set $nocache 1;
}
if ($arg_number) {
set $nocache 1;
}
proxy_no_cache $nocache;
}
id
查询参数由一个整数组成,通常为1-4位数。
toggle-on
和toggle-off
查询参数包含每个切换以逗号分隔的字符串。
例如,我可以:
https://mywebsite.com/?id=1234&toggle-on=animations,fields,experiments&toggle-off=control
toggle-on
会在代码中自行评估animations
,fields
和experiment
字符串。
但是,我发现由于某种原因,我根本无法正确缓存此内容。
id
字段已正确缓存 - Nginx知道一个ID与另一个ID之间的差异(此网站的UI根据此值动态更改)。
然而,toggle-on
和toggle-off
不会。它们没有正确地缓存在提供时为每个查询参数分配了哪些值。
我可以深入挖掘哪些东西,以便我可以更少地陷入困境?