Express with node.js not compressing jpeg images
express, gzip, javascript, node.js
Solution
Disclaimer: you really shouldn't attempt to gzip images. You seem to have a good reason for this, but I'm writing this for future readers :).
If you take a look at the compress middleware source code, you'll find this:
exports.filter = function(req, res){
return /json|text|javascript|dart|image\/svg\+xml|application\/x-font-ttf|application\/vnd\.ms-opentype|application\/vnd\.ms-fontobject/.test(res.getHeader('Content-Type'));
};
By default, only text files are compressed. This is logical, since binary files like images are already compressed.
Fortunately, you can pass your own:
express.compress({
filter: function (req, res) {
return true;
})
});
This should compress everything.
Problem
I am (a beginner and ) trying to serve gzipped jpegs with node.js and Express framework. I have the images in /public folder. My code looks like: ``` // require the express module var express = require('express'); var app = express(); app.use(express.logger()); //compress static content app.use(express.compress()); // GET verbs app.get('/', function(request, response) { response.send('Hello World!'); }); // GET /public/* app.use(express.static(__dirname + '/public')); // Start the app on port 8080 if PORT not set var port = process.env.PORT || 8080; app.listen(port, function() { console.log("Listening on " + port); }); ``` Am I missing something? On the Chrome debugger, with the cache disabled (ensure that HTTP response code is 200) the content-encoding: gzip header is not found in the response. Any leads as to what I am missing?