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