Обычно у меня есть правила конфигурации nginx, которые не позволяют кешировать все XMLHttpRequest:
map $http_x_requested_with $nocache_01 {
default 0;
XMLHttpRequest 1;
}
Есть ли способ кэшировать только запрос GET Ajax?
Благодарю за AD7six для подсказки. Теперь мои карты выглядят так.
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;
Это не показано, но предполагается, что в конфигурации есть блок if, например:
if ($nocache_01) {
...
}
Вместо этого, объединив эту переменную с методом запроса, возможна более явная проверка, например:
if ($nocache_01$request_method = "1GET") {
...
}
Или, например, вообще без карты:
if ($http_x_requested_with$request_method = "XMLHttpRequestGET") {
...
}