From a142848ef562ae4ebc3d66f8e328207f623bc383 Mon Sep 17 00:00:00 2001 From: Matteo Mazzarolo Date: Wed, 30 Aug 2017 17:45:28 +0200 Subject: [PATCH] Added side note about enabling gzip on Koa (#2867) I'll share this small snippet here, it might be useful. --- examples/custom-server-koa/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/examples/custom-server-koa/README.md b/examples/custom-server-koa/README.md index 87e03cf2..eb0a9df0 100644 --- a/examples/custom-server-koa/README.md +++ b/examples/custom-server-koa/README.md @@ -31,3 +31,20 @@ Most of the times the default Next server will be enough but sometimes you want 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. 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`. + + +## Side note: Enabling gzip compression + +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. +`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). + +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): + +```javascript +const compression = require('compression'); +const koaConnect = require('koa-connect'); + + +server.use(koaConnect(compression())); + +```