Модуль http_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.