Перейти к содержимому
Aback Tools Logo

Генератор middleware сжатия Express.js

Сгенерируйте конфигурацию middleware сжатия Express.js с npm-пакетом compression — онлайн и бесплатно. Наш генератор создаёт полноценную готовую к вставке конфигурацию с настраиваемым уровнем сжатия (1-9), порогом размера ответа, собственной функцией фильтра для пропуска уже сжатых типов контента и middleware для заголовка Vary. Поддерживается вывод CommonJS, ESM и TypeScript, а также варианты для Fastify (@fastify/compress) и Koa (koa-compress). Без регистрации, 100 % в браузере.

Express.js Compression Middleware Generator
Configure the options below to generate an Express.js compression middleware setup using the compression npm package. Supports CommonJS, ESM, and TypeScript output. All generation happens in your browser - no signup required.
1 (fastest)Default - recommended for most apps9 (smallest)

Responses smaller than this threshold are not compressed. 1KB is the recommended default.

Higher values use more memory but improve compression speed. Default (8) is recommended for most servers.

Options

Install

npm install compression

app.js

const compression = require('compression');
const express = require('express');

// Custom filter - skip compression for already-compressed content types
function shouldCompress(req, res) {
  // Don't compress responses with this request header
  if (req.headers['x-no-compression']) return false;

  // Skip already-compressed content types
  const contentType = res.getHeader('Content-Type');
  if (typeof contentType === 'string') {
    const skipTypes = [
      'image/jpeg', 'image/png', 'image/webp', 'image/avif',
      'image/gif', 'video/', 'audio/', 'application/zip',
      'application/gzip', 'application/x-bzip2', 'font/woff2',
    ];
    if (skipTypes.some(t => contentType.startsWith(t))) return false;
  }

  // Fall back to default compression filter
  return compression.filter(req, res);
}

const app = express();

// -- Compression middleware ----------------------------------------------------
// Must be registered BEFORE routes and static file serving
app.use(compression({
  // Compression level: 1 (fastest) to 9 (smallest). Default is zlib.Z_DEFAULT_COMPRESSION (6).
  level: 6,

  // Only compress responses above this byte threshold
  threshold: 1024, // 1KB

  // Custom filter function - skips already-compressed content types
  filter: shouldCompress,
}));

// Ensure Vary: Accept-Encoding is set for correct CDN caching
app.use((_req, res, next) => {
  res.setHeader('Vary', 'Accept-Encoding');
  next();
});

// -- Your routes --------------------------------------------------------------
app.get('/', (req, res) => {
  res.json({ message: 'Hello, compressed world!' });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

// -- Brotli support note ------------------------------------------------------
// The 'compression' package only supports GZIP and DEFLATE.
// For Brotli support in Express, use 'shrink-ray-current' instead:
//
//   npm install shrink-ray-current
//
//   const shrinkRay = require('shrink-ray-current');
//   app.use(shrinkRay());
//
// Or use 'express-static-gzip' to serve pre-compressed .br and .gz files:
//   npm install express-static-gzip

The compression package uses Node.js's built-in zlib module and supports GZIP and DEFLATE only. Register it before all routes and express.static() calls for it to take effect.

Почему стоит использовать наш генератор middleware сжатия Express.js?

  • Мгновенная генерация конфигурации сжатия Express.js: наш генератор сразу создаёт полную готовую к вставке конфигурацию middleware, включая объект опций compression, собственную функцию фильтра, middleware заголовка Vary и заметки о переходе на Brotli. Читать документацию npm вручную не нужно.
  • Безопасный онлайн-генератор middleware сжатия Express.js: ваши настройки никогда не покидают устройство при использовании нашего онлайн-генератора. Вся генерация кода выполняется полностью в браузере — без обращений к серверам, без хранения данных, 100 % приватно.
  • Вывод CommonJS, ESM и TypeScript: генерируйте middleware сжатия Express.js в удобном формате модулей — CommonJS (require), ESM (import) или TypeScript с полными аннотациями типов. Также поддерживаются варианты Express Router, Fastify (@fastify/compress) и Koa (koa-compress).
  • Генератор middleware сжатия Express.js без установки: создавайте конфигурацию middleware сжатия Express.js прямо в браузере. Без Node.js, без npm и без IDE. Наш бесплатный генератор работает на любом устройстве с современным браузером — без регистрации и без ограничений размера.

Часто задаваемые вопросы

Генератор middleware сжатия Express.js создаёт готовую к вставке конфигурацию middleware сжатия для приложений Express.js с использованием npm-пакета compression. Наш бесплатный онлайн-генератор создаёт полную конфигурацию, включая уровень сжатия, порог, собственную функцию фильтра и middleware заголовка Vary.

Middleware сжатия нужно регистрировать до всех маршрутов и до вызовов express.static(). Если зарегистрировать его после маршрута, ответы этого маршрута не будут сжаты. В сгенерированном коде есть комментарий с указанием правильного места.

Да. Вся генерация кода выполняется полностью в браузере на JavaScript. Никакие данные конфигурации не отправляются на сервер, не хранятся удалённо и не передаются по сети.

Да — 100 % бесплатно, навсегда. Без регистрации, без аккаунта, без платных тарифов, без ограничений размера файла и без рекламы, мешающей работе.

Нет — npm-пакет compression поддерживает только GZIP и DEFLATE. Для поддержки Brotli в Express.js используйте shrink-ray-current или express-static-gzip, чтобы отдавать предварительно сжатые файлы .br. В сгенерированном коде есть комментарий с объяснением обоих вариантов.

Для большинства приложений Express.js рекомендуется уровень 6 (по умолчанию) — он даёт хороший баланс между степенью сжатия и затратами CPU. Уровень 1 используйте для высоконагруженных API, где важны затраты CPU.

Без собственного фильтра middleware сжатия попытается сжимать уже сжатые типы контента — JPEG, PNG, WebP, видео, ZIP и шрифты WOFF2. Это тратит CPU без выигрыша в размере. Собственная функция фильтра в сгенерированном коде автоматически пропускает такие типы контента.

Опция threshold задаёт минимальный размер ответа в байтах, ниже которого сжатие пропускается. Сжатие очень маленьких ответов тратит CPU и добавляет накладные расходы без значимой экономии. Для большинства приложений рекомендуется порог 1 КБ по умолчанию.

Вариант приложения регистрирует middleware сжатия глобально для всего приложения. Вариант Router регистрирует его только для конкретного роутера, что позволяет выборочно применять сжатие к определённым группам маршрутов.