https://mailman.nginx.org/mailman/listinfo/nginx-ru --- *B. R.*
2017-05-10 19:18 GMT+02:00 Roman Arutyunyan <a...@nginx.com>: > Добрый день, > > 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 >
_______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx