Slice cache

Maxim Dounin mdounin на mdounin.ru
Вт Апр 19 13:28:30 UTC 2016


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