Node.jsでの圧縮入門
Node.jsとExpressで圧縮すると、ユーザーに提供されるダウンロード可能なデータ量が減少します。 この圧縮を使用することで、ペイロードサイズが大幅に削減されるため、Node.jsアプリケーションのパフォーマンスを向上させることができます。
圧縮には2つの方法があります。 1つは、Node.jsアプリで直接呼び出すことです。 compression
ミドルウェア、およびもう1つは、NGINXなどのソフトウェアを介してリバースプロキシレベルで使用することです。
圧縮を設定する方法
Node.jsアプリケーションで圧縮の使用を開始するには、 compression
Node.jsアプリのメインファイルにあるミドルウェア。 これにより、さまざまな圧縮スキームをサポートするGZIPが有効になります。 これにより、JSON応答やその他の静的ファイル応答が小さくなります。
まず、次のnpmパッケージをインストールする必要があります compression
:
$ npm i compression --save
次に、Express.jsのように、サーバーを初期化した後、アプリケーションでモジュールを使用できます。
const compression = require('compression');
const express = require('express');
const app = express();
// compress all responses
app.use(compression());
app.get('/', (req, res) => {
const animal = 'alligator';
// Send a text/html file back with the word 'alligator' repeated 1000 times
res.send(animal.repeat(1000));
});
// ...
上記の例では、GET操作を呼び出して text/html
単語のファイル alligator
1000回印刷しました。 圧縮しないと、応答は約9kbのサイズで返されます。
圧縮をオンにすると、応答は次のようなヘッダーとともに送信されます Content-Encoding: gzip
、代わりに342Bのみです。
圧縮のオプション
デフォルト設定に加えて、ユースケースに合わせて圧縮をカスタマイズできます。 オプションオブジェクトで使用できるいくつかの異なるプロパティがあります。 選択できるプロパティの完全なリストを取得するには、 compression
ドキュメント。
のオプションを追加するには compression
、コードは次のようになります。
const shouldCompress = (req, res) => {
if (req.headers['x-no-compression']) {
// don't compress responses if this request header is present
return false;
}
// fallback to standard compression
return compression.filter(req, res);
};
app.use(compression({
// filter decides if the response should be compressed or not,
// based on the `shouldCompress` function above
filter: shouldCompress,
// threshold is the byte threshold for the response body size
// before compression is considered, the default is 1kb
threshold: 0
}));
そして、あなたはそれを持っています! 必ず使用してください compression
Node.jsアプリで、ペイロードサイズを小さくてスッキリと保つことができます。