Skip to content

Commit a142848

Browse files
mmazzarolotimneutkens
authored andcommitted
Added side note about enabling gzip on Koa (vercel#2867)
I'll share this small snippet here, it might be useful.
1 parent 99c4798 commit a142848

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

examples/custom-server-koa/README.md

+17
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,20 @@ Most of the times the default Next server will be enough but sometimes you want
3131
Because the Next.js server is just a node.js module you can combine it with any other part of the node.js ecosystem. in this case we are using [Koa](http://koajs.com/) to build a custom router on top of Next.
3232

3333
The example shows a server that serves the component living in `pages/a.js` when the route `/b` is requested and `pages/b.js` when the route `/a` is accessed. This is obviously a non-standard routing strategy. You can see how this custom routing is being made inside `server.js`.
34+
35+
36+
## Side note: Enabling gzip compression
37+
38+
The most common Koa middleware for handling the gzip compression is [compress](https://github.com/koajs/compress), but unfortunately it is currently not compatible with Next.
39+
`koa-compress` handles the compression of the response body by checking `res.body`, which will be empty in the case of the routes handled by Next (because Next sends and ends the response by itself).
40+
41+
If you need to enable the gzip compression, the most simple way to do so is by wrapping the express-middleware [compression](https://github.com/expressjs/compression) with [koa-connect](https://github.com/vkurchatkin/koa-connect):
42+
43+
```javascript
44+
const compression = require('compression');
45+
const koaConnect = require('koa-connect');
46+
47+
48+
server.use(koaConnect(compression()));
49+
50+
```

0 commit comments

Comments
 (0)