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