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_range должна быть передана на проксируемый сервер в качестве поля "Range" заголовка запроса. Если включено кэширование, то необходимо добавить $slice_range в ключ кэширования и включить кэширование ответов с кодом 206.
Встроенные переменные#
$slice_range
#
текущий диапазон фрагмента в формате HTTP byte range, например bytes=0-1048575.