Re: Slice cache

2016-04-19 Пенетрантность S.A.N
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

2016-04-19 Пенетрантность Maxim Dounin
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

2016-04-19 Пенетрантность S.A.N
> По умолчанию 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

2016-04-18 Пенетрантность Maxim Dounin
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

2016-04-18 Пенетрантность S.A.N
Здравствуйте.

Я хотел бы узнать, 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