Nginx — отключить кэш для запроса XHR

#apache #caching #nginx

#apache #кэширование #nginx

Вопрос:

Как я могу отключить кеш, когда входящий запрос является XHR (ajax) с помощью nginx (и, если это возможно, для Apache)?

XHR имеет этот заголовок https:

 X-Requested-With : XMLHttpRequest
  

Спасибо

Ответ №1:

для nginx, пожалуйста, попробуйте следующий код,

 ...
set $no_cache 0;
...
if ($http_x_requested_with ~* 'XMLHttpRequest') {
   set $no_cache 1;
}
...
location ~ .php$ {
   ...
   fastcgi_no_cache $no_cache;
   ...
}
...
  

Ссылки: Научитесь реализовывать кэширование в Nginx, fastcgi_no_cache

Комментарии:

1. Параметр fastcgi_no_cache гарантирует, что ответ не будет кэширован, если в противном случае он был бы кэширован. Однако, если существует существующий кэшированный ответ, он будет обслуживать этот ответ. Если вы хотите убедиться, что это не так, вам нужно будет добавить fastcgi_cache_bypass $no_cache; . Комбинация параметров fastcgi_no_cache и fastcgi_cache_bypass обеспечивает точный контроль поведения кэширования.

Ответ №2:

Обычно рекомендуется избегать if использования файлов конфигурации nginx, когда это возможно. Если у вас есть какой-либо способ адаптировать интерфейс, откуда отправляются запросы, попробуйте добавить текущее время в качестве переменной GET (например myhost/?1475834405 ). Поскольку этот URL-адрес ранее не запрашивался, кэш использоваться не будет.