我是VCL规则的新手。 我想排除特殊页面被varnish cache缓存。
我真正想做的是排除所有缓存的网址,其中包含特定的查询字符串" query =(数字介于1和100之间)"
此代码仅适用于一个特定查询。
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=100") {
return(pass);
}
}
我只是想确保此规则适用于1-100的整个范围,对吗?
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=[0-9]") {
return(pass);
}
}
或者我必须这样做吗?
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=1||query=2||...||query=99||query=100") {
return(pass);
}
}
答案 0 :(得分:0)
我不知道Varnish是否支持花括号,如果有,你应该做类似的事情:
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=([0-9]{1,2}|100)") {
return(pass);
}
}
顺便说一句,这个正则表达式匹配“query = 990”。我不知道你的网址是如何编写的,但你应该添加一些东西以避免它(如果你真的需要)。
例如,如果还有其他参数:
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=([0-9]{1,2}|100)&") {
return(pass);
}
}
或者万一它是网址中的最后一个参数:
sub vcl_recv {
# don't cache these special pages
if (req.url ~ "query=([0-9]{1,2}|100)$") {
return(pass);
}
}