Re: Slice cache
Maxim Dounin Wrote: --- > Hello! > > On Tue, Apr 19, 2016 at 03:24:37AM -0400, S.A.N wrote: > > > > По умолчанию range-запросы из кеша работают только в том случае, > > > если в ответе бекенда был заголовок Accept-Ranges и должна быть > > > явно указана длина ответа. > > > > Супер, спасибо, отдали Accept-Ranges все работает. > > > > Кстати есть ли смысл бекенду сжимать (gzip) свой ответ, если клиенты > > запрашивают кеш частично (Range)? > > Я так понимаю что в этом случаи Nginx каждый раз надо разжимать > большой > > ответ, потом сжимать часть которые запросил клиент. > > Я бы не стал. > > Сжатие на лету исключает возможность использования range-запросов, > т.к. сжимается весь ответ целиком и результат сжатия может быть > разный в зависимости от временных факторов, а range-запросы должны > применяться к уже сжатому ответу. Для range-запросов могло бы > работать сжатие на уровне передачи по http ("Transfer-Encoding: > gzip"), но оно практически нигде не поддерживается. > > Можно пытаться детерминировано сжимать на бекенде, и > соответственно потом из кеша nginx будет раздавать сжатый файл с > учётом range-запросов, но разжимать это nginx не сможет, либо же > пропадёт возможность использовать range-запросы для расжатого > ответа (потому что нужна явно заданная длина, см. предыдущий > ответ, а длина при расжатии заранее неизвестна). > Понял, спасибо. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,266232,266257#msg-266257 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Slice cache
Hello! On Tue, Apr 19, 2016 at 03:24:37AM -0400, S.A.N wrote: > > По умолчанию range-запросы из кеша работают только в том случае, > > если в ответе бекенда был заголовок Accept-Ranges и должна быть > > явно указана длина ответа. > > Супер, спасибо, отдали Accept-Ranges все работает. > > Кстати есть ли смысл бекенду сжимать (gzip) свой ответ, если клиенты > запрашивают кеш частично (Range)? > Я так понимаю что в этом случаи Nginx каждый раз надо разжимать большой > ответ, потом сжимать часть которые запросил клиент. Я бы не стал. Сжатие на лету исключает возможность использования range-запросов, т.к. сжимается весь ответ целиком и результат сжатия может быть разный в зависимости от временных факторов, а range-запросы должны применяться к уже сжатому ответу. Для range-запросов могло бы работать сжатие на уровне передачи по http ("Transfer-Encoding: gzip"), но оно практически нигде не поддерживается. Можно пытаться детерминировано сжимать на бекенде, и соответственно потом из кеша nginx будет раздавать сжатый файл с учётом range-запросов, но разжимать это nginx не сможет, либо же пропадёт возможность использовать range-запросы для расжатого ответа (потому что нужна явно заданная длина, см. предыдущий ответ, а длина при расжатии заранее неизвестна). -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Slice cache
> По умолчанию range-запросы из кеша работают только в том случае, > если в ответе бекенда был заголовок Accept-Ranges и должна быть > явно указана длина ответа. Супер, спасибо, отдали Accept-Ranges все работает. Кстати есть ли смысл бекенду сжимать (gzip) свой ответ, если клиенты запрашивают кеш частично (Range)? Я так понимаю что в этом случаи Nginx каждый раз надо разжимать большой ответ, потом сжимать часть которые запросил клиент. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,266232,266247#msg-266247 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Slice cache
Hello! On Mon, Apr 18, 2016 at 04:37:52PM -0400, S.A.N wrote: > Я хотел бы узнать, Nginx умеет отдавать клиентам из своего кеша, ответы > частями? Да. > Корректный заголовок Range: bytes... клиент отправляет, но Nginx из кеша > отдает весь ответ статус - 200, вместо частичного ответа со статусом 206. По умолчанию range-запросы из кеша работают только в том случае, если в ответе бекенда был заголовок Accept-Ranges и должна быть явно указана длина ответа. Если заголовка Accept-Ranges нет - можно форсировать поддержку range-запросов с помощью директивы proxy_force_ranges (http://nginx.org/r/proxy_force_ranges/ru), но лучше его просто добавить в ответ бекенда. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Slice cache
Здравствуйте. Я хотел бы узнать, Nginx умеет отдавать клиентам из своего кеша, ответы частями? Корректный заголовок Range: bytes... клиент отправляет, но Nginx из кеша отдает весь ответ статус - 200, вместо частичного ответа со статусом 206. По сути нужен функционал обратный модулю Slice. Наш use case: Бекенд отдает, большой ресурсоемкий ответ (аналитик отчет - это результат многих сложных SQL) разным клиентам в разное время нужны только части этого отчета и иногда весь целиком. Модуль Slice только усложнит ситуацию, потому что он сгенерирует много подзапросов на бекенд, вот именно этого и нужно избежать, чтобы бекенд не генерировал куски отчета много раз, а один раз сделал полный отчет и отдал в кеш Nginx. Надеюсь это можно сделать. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,266232,266232#msg-266232 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru