Модуль ngx_http_slice_module

Известные проблемы
Пример конфигурации
Директивы
     slice
Встроенные переменные

Модуль ngx_http_slice_module (1.9.8) — это фильтр, который разбивает запрос на подзапросы, каждый из которых возвращает определённый диапазон ответа. Фильтр обеспечивает более эффективное кэширование больших ответов.

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра --with-http_slice_module.

Известные проблемы

В настоящий момент модуль не работает как ожидается с подзапросами, например фоновым обновлением кэша. В этом случае построение запроса происходит без указания диапазона байт.

Пример конфигурации

location / {
    slice             1m;
    proxy_cache       cache;
    proxy_cache_key   $uri$is_args$args$slice_range;
    proxy_set_header  Range $slice_range;
    proxy_cache_valid 200 206 1h;
    proxy_pass        http://localhost:8000;
}

В данном примере ответ разбивается на кэшируемые фрагменты размером в 1 мегабайт.

Директивы

Синтаксис: slice размер;
Умолчание:
slice 0;
Контекст: http, server, location

Задаёт размер фрагмента. Нулевое значение запрещает разбиение ответов на фрагменты. Обратите внимание, что слишком низкое значение может привести к излишнему потреблению памяти и открытию большого количества файлов.

Для того, чтобы подзапрос вернул необходимый диапазон, переменная $slice_range должна быть передана на проксируемый сервер в качестве поля Range заголовка запроса. Если включено кэширование, то необходимо добавить $slice_range в ключ кэширования и включить кэширование ответов с кодом 206.

Встроенные переменные

Модуль ngx_http_slice_module поддерживает следующие встроенные переменные:

$slice_range
текущий диапазон фрагмента в формате HTTP byte range, например bytes=0-1048575.