Lompat ke konten
Aback Tools Logo

Generator Middleware Kompresi Express.js

Buat konfigurasi middleware kompresi Express.js memakai paket npm compression - online dan gratis. Generator kami menghasilkan pengaturan lengkap yang siap ditempelkan dengan tingkat kompresi yang dapat dikonfigurasi (1-9), ambang ukuran respons, fungsi filter kustom untuk melewati tipe konten yang sudah terkompresi, dan middleware header Vary. Mendukung keluaran CommonJS, ESM, dan TypeScript, serta varian Fastify (@fastify/compress) dan Koa (koa-compress). Tanpa pendaftaran, 100% di browser.

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.

Mengapa memakai generator middleware kompresi Express.js kami?

  • Pembuatan konfigurasi kompresi Express.js instan: generator middleware kompresi Express.js kami menghasilkan pengaturan middleware lengkap yang siap tempel seketika - termasuk objek opsi compression, fungsi filter kustom, middleware header Vary, dan catatan upgrade ke Brotli. Tanpa perlu membaca dokumentasi npm secara manual.
  • Generator middleware kompresi Express.js online yang aman: pilihan konfigurasi Anda tidak pernah meninggalkan perangkat saat memakai generator online kami. Semua pembuatan kode berjalan sepenuhnya di browser - tanpa permintaan server, tanpa penyimpanan data, 100% privat.
  • Keluaran CommonJS, ESM, dan TypeScript: hasilkan middleware kompresi Express.js dalam format modul pilihan Anda - CommonJS (require), ESM (import), atau TypeScript dengan anotasi tipe lengkap. Juga mendukung varian Express Router, Fastify (@fastify/compress), dan Koa (koa-compress).
  • Generator middleware kompresi Express.js tanpa instalasi: hasilkan konfigurasi middleware kompresi Express.js langsung di browser Anda. Tanpa Node.js, tanpa npm, tanpa IDE. Generator gratis kami bekerja di perangkat apa pun dengan browser modern - tanpa pendaftaran, tanpa batas ukuran file.

Pertanyaan yang Sering Diajukan

Generator middleware kompresi Express.js menghasilkan pengaturan middleware kompresi siap tempel untuk aplikasi Express.js memakai paket npm compression. Generator online gratis kami membuat konfigurasi lengkap - termasuk tingkat kompresi, ambang, filter kustom, dan middleware header Vary.

Middleware kompresi harus didaftarkan sebelum semua rute dan sebelum pemanggilan express.static(). Jika didaftarkan setelah sebuah rute, respons dari rute tersebut tidak akan dikompresi. Kode yang dihasilkan menyertakan komentar yang menunjukkan penempatan yang benar.

Ya. Semua pembuatan kode berjalan sepenuhnya di browser Anda memakai JavaScript. Tidak ada data konfigurasi yang dikirim ke server, disimpan secara remote, atau dikirim melalui jaringan.

Ya - 100% gratis, selamanya. Tanpa pendaftaran, tanpa akun, tanpa paket berbayar, tanpa batas ukuran file, dan tanpa iklan yang mengganggu alur kerja Anda.

Tidak - paket npm compression hanya mendukung GZIP dan DEFLATE. Untuk dukungan Brotli di Express.js, gunakan shrink-ray-current atau express-static-gzip untuk menyajikan file .br yang sudah dipra-kompresi. Kode yang dihasilkan menyertakan komentar yang menjelaskan kedua opsi.

Tingkat 6 (bawaan) direkomendasikan untuk sebagian besar aplikasi Express.js - memberi keseimbangan baik antara rasio kompresi dan beban CPU. Gunakan tingkat 1 untuk API berthroughput tinggi yang mengutamakan efisiensi CPU.

Tanpa filter kustom, middleware kompresi akan mencoba memampatkan tipe konten yang sudah terkompresi - JPEG, PNG, WebP, video, ZIP, dan font WOFF2. Ini membuang CPU tanpa manfaat ukuran. Fungsi filter kustom pada kode yang dihasilkan otomatis melewati tipe konten tersebut.

Opsi threshold menetapkan ukuran respons minimum dalam byte yang di bawahnya kompresi dilewati. Memampatkan respons yang sangat kecil membuang CPU dan menambah overhead tanpa penghematan berarti. Ambang bawaan 1 KB direkomendasikan untuk sebagian besar aplikasi.

Varian aplikasi Express mendaftarkan middleware kompresi secara global pada seluruh aplikasi. Varian Router mendaftarkannya hanya pada router tertentu sehingga Anda bisa menerapkan kompresi secara selektif untuk kelompok rute tertentu.