Nginx: Как предотвратить кэширование ajax-запросов на прокси? - PullRequest
6 голосов
/ 21 мая 2011

В настоящее время мне нужно избегать кэширования Ajax-запросов, но продолжать кэшировать страницы результатов.

Я знаю, какие директивы запрещают кэширование: proxy_no_cache или proxy_cache_bypass Но как добавить правильное утверждение. Через блок если? Заявление должно быть таким?

$http_x_requested_with=XMLHttpRequest

Спасибо;)

Обновление

Как это?

proxy_cache_bypass  $http_x_requested_with=XMLHttpRequest;
proxy_no_cache      $http_x_requested_with=XMLHttpRequest;

Ответы [ 2 ]

5 голосов
/ 02 апреля 2013

Использование блока if внутри блока местоположения может быть сложным (http://wiki.nginx.org/IfIsEvil). Так что лучше помещать его вне блока местоположения. Однако это влияет на производительность, поскольку все запросы должны проходить через блок if.

Лучше использовать директиву map (http://wiki.nginx.org/HttpMapModule), чтобы установить переменную, а затем использовать эту переменную в директивах прокси. Производительность лучше (посмотрите, как она работает в приведенной выше ссылке).

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

server {
    ...
    proxy_cache_bypass  $nocache;
    proxy_no_cache      $nocache;
}
3 голосов
/ 02 апреля 2013

это работает для меня:

if ($http_x_requested_with = XMLHttpRequest) {
    set $nocache 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...