Next.js 16.4.6 исправил сжатие ответов Route Handlers

Next.js 16.4.6 исправил сжатие ответов Route Handlers
Содержание статьи

9 ноября вышел Next.js 16.4.6. В патч активной ветки LTS включили исправление для приложений, которые запускают через next start на собственном сервере. Ответы обработчиков маршрутов App Router теперь могут сжиматься штатным механизмом Next.js. На Mentoring.digital разбираем, где искать изменение после обновления.

Почему ответы пропускали сжатие

Route Handler обрабатывает HTTP-запрос и может вернуть, например, JSON со списком товаров. При отправке такого ответа Next.js хранил даже одиночный Content-Type как массив. Механизм сжатия ожидает строку и из-за этого пропускал ответ, в том числе если тот уже был подготовлен и взят из кеша. В 16.4.6 одиночное значение сохраняется как строка.

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

Что проверить на тестовом окружении

  1. Возьмите один маршрут, который возвращает достаточно большой JSON. Отправьте запросы до и после обновления с одинаковым телом ответа и с заголовком Accept-Encoding, в котором указан gzip.
  2. Проверьте Content-Encoding и сравните размер переданных данных. После распаковки проверьте статус, тип содержимого и сам JSON.
  3. Если есть прокси, повторите проверку через него. Сравнение с прямым запросом к приложению покажет, какой слой сжимает ответ.

Если маршрут собирает данные из нескольких сервисов и вы хотите разобраться, где меняются заголовки, обсудите конкретный запрос с наставником по фронтенд-разработке.

Похожие статьи по данной теме