0
0
Node.jsframework~20 mins

Compression middleware in Node.js - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Compression Middleware Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output behavior of this Express app using compression middleware?

Consider this Express.js server code snippet using compression middleware:

import express from 'express';
import compression from 'compression';

const app = express();
app.use(compression());

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000);

What happens when a client sends a request with Accept-Encoding: gzip header?

Node.js
import express from 'express';
import compression from 'compression';

const app = express();
app.use(compression());

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000);
AThe server responds with compressed content but does not set any Content-Encoding header.
BThe server responds with uncompressed 'Hello World!' ignoring the Accept-Encoding header.
CThe server throws an error because compression middleware requires manual compression calls.
DThe server responds with compressed (gzip) 'Hello World!' content and sets 'Content-Encoding: gzip' header.
Attempts:
2 left
💡 Hint

Compression middleware automatically compresses responses when the client supports it.

📝 Syntax
intermediate
2:00remaining
Which option correctly applies compression middleware only to JSON responses?

You want to compress only JSON responses in your Express app. Which code snippet correctly achieves this?

Aapp.use(compression({ filter: (req, res) => res.getHeader('Content-Type') === 'application/json' }));
Bapp.use(compression({ filter: (req, res) => res.getHeader('content-type')?.includes('application/json') }));
Capp.use(compression({ filter: (req, res) => req.headers['content-type'] === 'application/json' }));
Dapp.use(compression({ filter: (req, res) => res.headers['Content-Type'] === 'application/json' }));
Attempts:
2 left
💡 Hint

Headers are case-insensitive and may include charset info.

🔧 Debug
advanced
2:00remaining
Why does this Express app fail to compress responses?

Look at this Express app code:

import express from 'express';
import compression from 'compression';

const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.use(compression());

app.listen(3000);

Why are responses not compressed?

Node.js
import express from 'express';
import compression from 'compression';

const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.use(compression());

app.listen(3000);
ACompression middleware is added after routes, so it does not affect responses.
BCompression middleware only works with POST requests.
CThe app is missing a call to next() in the route handler.
DCompression middleware requires manual calls to compress responses.
Attempts:
2 left
💡 Hint

Middleware order matters in Express.

🧠 Conceptual
advanced
2:00remaining
What is the main benefit of using compression middleware in a Node.js server?

Why do developers add compression middleware like compression in their Node.js servers?

ATo reduce the size of response bodies, improving load times and saving bandwidth.
BTo encrypt response data for security purposes.
CTo cache responses on the server for faster repeated requests.
DTo convert all responses to JSON format automatically.
Attempts:
2 left
💡 Hint

Think about what compression means in everyday life.

state_output
expert
2:00remaining
What is the Content-Encoding header value after this code runs?

Given this Express app snippet:

import express from 'express';
import compression from 'compression';

const app = express();
app.use(compression({ threshold: 1024 }));

app.get('/', (req, res) => {
  res.send('Short');
});

app.listen(3000);

If a client requests '/' with Accept-Encoding: gzip, what is the Content-Encoding header in the response?

Node.js
import express from 'express';
import compression from 'compression';

const app = express();
app.use(compression({ threshold: 1024 }));

app.get('/', (req, res) => {
  res.send('Short');
});

app.listen(3000);
AContent-Encoding: br (Brotli) is set automatically.
BContent-Encoding: deflate is set by default.
CNo Content-Encoding header is set because response size is below threshold.
DContent-Encoding: gzip is set because client accepts gzip.
Attempts:
2 left
💡 Hint

Check the meaning of the threshold option in compression middleware.