#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-адрес ранее не запрашивался, кэш использоваться не будет.