Я пытаюсь выяснить, что нужно сделать, чтобы Google App Engine (стандартная версия) применил сжатие к выходным данным моего приложения Next.js / Node.js / Express.
Насколько я понял, проблема в том, что
1) Балансировщик нагрузки Google удаляет все метатеги, указывающие на то, что клиент поддерживает сжатие из запроса, и поэтому app.use(compression())
в server.js
ничего не сделает. Я пытался принудительно сжать с помощью функции {filter: shouldCompress}
, но, похоже, это не имеет значения, поскольку внешний интерфейс Google все еще возвращает несжатый результат. (Локальное сжатие работает нормально.)
2) Как и когда балансировщик нагрузки Google выбирает сжатие, для меня загадка. (И особенно, почему бы не мое глупое, но большое application/javascsript
содержание :)
Вот что они говорят в документах:
Если клиент отправляет заголовки HTTP с указанием исходного запроса
что клиент может принимать сжатый (сжатый) контент, App Engine
сжимает данные ответа обработчика автоматически и присоединяет
соответствующие заголовки ответа. Он использует как Accept-Encoding, так и
Заголовки запроса User-Agent, чтобы определить, может ли клиент надежно
получать сжатые ответы.
Как обрабатываются запросы: сжатие ответов
Так вот. Я хотел бы использовать App Engine для этого проекта, но когда index.js имеет размер 700 КБ вместо сжатых 200 КБ, это своего рода демонстрация.