Existe uma maneira de armazenar em cache apenas o pedido GET Ajax?

1

Normalmente eu tenho em regras de configuração nginx que não permite cache todo XMLHttpRequest:

map $http_x_requested_with $nocache_01 {
    default         0;
    XMLHttpRequest  1;
}

Existe uma maneira de armazenar em cache apenas o pedido GET Ajax?

    
por Rostyslav Malenko 02.12.2014 / 16:01

2 respostas

1

Use o $ request_method

É mostrado, mas supõe que há um bloco if na configuração da seguinte forma:

if ($nocache_01) {
    ...
}

Em vez disso, ao concatenar essa variável com o método de solicitação, uma verificação mais explícita é possível, por exemplo:

if ($nocache_01$request_method = "1GET") {
    ...
}

Ou, por exemplo, sem usar um mapa:

if ($http_x_requested_with$request_method = "XMLHttpRequestGET") {
    ...
}
    
por 02.12.2014 / 22:04
1

Agradecemos por AD7six por solicitação. Agora, meus mapas parecem assim.

map $http_x_requested_with$request_method $nocache_01 { default 0; XMLHttpRequestGET 0; ~XMLHttpRequest(PUT|PATH|DELETE|POST) 1; }

Isso significa que XMLHttpRequest (PUT | PATH | DELETE | POST) não será armazenado em cache

fastcgi_no_cache $nocache_01; fastcgi_cache_bypass $nocache_01;

    
por 03.12.2014 / 20:56

Tags