Slice#

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

При сборке из исходного кода модуль не собирается по умолчанию; его необходимо включить с помощью параметра сборки ‑‑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 размер;

По умолчанию

slice 0;

Контекст

http, server, location

Задает размер фрагмента. Нулевое значение запрещает разбиение ответов на фрагменты.

Предупреждение

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

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

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

$slice_range#

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