updateweb
This commit is contained in:
35
backend/middleware/compression.js
Normal file
35
backend/middleware/compression.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* 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;
|
||||
Reference in New Issue
Block a user