通常我在 nginx 配置规则中不允许缓存所有 XMLHttpRequest:
map $http_x_requested_with $nocache_01 {
default 0;
XMLHttpRequest 1;
}
有没有办法只缓存 GET Ajax 请求?
答案1
使用 $request_method
它没有显示,但假设配置中有一个 if 块,如下所示:
if ($nocache_01) {
...
}
相反,通过将此变量与请求方法连接起来,可以进行更明确的检查,即:
if ($nocache_01$request_method = "1GET") {
...
}
或者,例如根本不使用地图:
if ($http_x_requested_with$request_method = "XMLHttpRequestGET") {
...
}
答案2
谢谢AD7六提示。现在,我的地图看起来就像这样。
map $http_x_requested_with$request_method $nocache_01 { default 0; XMLHttpRequestGET 0; ~XMLHttpRequest(PUT|PATH|DELETE|POST) 1; }
这意味着 XMLHttpRequest(PUT|PATH|DELETE|POST) 将不会被缓存
fastcgi_no_cache $nocache_01; fastcgi_cache_bypass $nocache_01;