Files
SkyArtShop/backend/middleware/compression.js
Local Server 1919f6f8bb updateweb
2026-01-01 22:24:30 -06:00

36 lines
1007 B
JavaScript

/**
* Response Compression Middleware
* Compresses API responses to reduce payload size
*/
const compression = require("compression");
const compressionMiddleware = compression({
// Only compress responses larger than 1kb
threshold: 1024,
// Compression level (0-9, higher = better compression but slower)
level: 6,
// Filter function - don't compress already compressed formats
filter: (req, res) => {
if (req.headers["x-no-compression"]) {
return false;
}
// Check content-type
const contentType = res.getHeader("Content-Type");
if (!contentType) return compression.filter(req, res);
// Don't compress images, videos, or already compressed formats
if (
contentType.includes("image/") ||
contentType.includes("video/") ||
contentType.includes("application/zip") ||
contentType.includes("application/pdf")
) {
return false;
}
return compression.filter(req, res);
},
});
module.exports = compressionMiddleware;