Quantcast
Channel: Nginx Forum - Nginx Mailing List - Russian
Viewing all articles
Browse latest Browse all 3102

Re: fastcgi cache background update ssi подзапросов (no replies)

$
0
0
Добрый день,

On Wed, May 10, 2017 at 12:04:39PM -0400, metalfm1 wrote:
> Приветствую!
>
> Директива fastcgi_cache_background_update странно ведёт себя при ssi
> подзапросах.
> Есть сервис со сложной бизнес логикой, главная страница загружается 1 сек,
> стек nginx + php-fpm. В ходе оптимизации скорости загрузки было решено
> вынести генерацию самого долгого куска страницы в отдельный ssi подзапрос и
> кешировать его на 1 час. Кешированием управляет fastcgi сервер на php с
> помощью заголовка Cache-Control.
>
> С кеширование проблем нет, nginx успешно кеширует подзапросы /ssi_dev/ и
> складывает их на диск. Проблемы начинаются когда кеш протухает.
>
> Текущее поведение nginx
> - если есть элемент в кеше, то он успешно отдается(HIT)
> - если есть элемент в кеше, но он устарел, то клиенту отдаётся устаревшая
> версия(STALE) и делается подзапрос на прогрев кеша(EXPIRED)
>
> Проблема заключается в том, что подзапрос на прогрев кеша выполняется в
> блокирующем режиме. То есть основной запрос ждёт выполнения подзапроса.
> Указанная выше проблема не наблюдается, если в кеш класть всю страницу,
> поведение nginx соответствует документации. Клиенту отдаётся старая версия
> контента и делается неблокирующий подзапрос на обновление.

На текущий момент background update реализован так, что он блокирует основной
запрос, если запущен в подзапросе. Это как раз ваш случай.
В таск https://trac.nginx.org/nginx/ticket/1249 я аттачил патч, который должен
это вылечить.

[..]

--
Roman Arutyunyan
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Viewing all articles
Browse latest Browse all 3102

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>