圧縮機能
- serve-static:
serve-static
は、静的ファイルを提供するためのミドルウェアですが、圧縮機能は組み込まれていません。圧縮を行いたい場合は、別途compression
ミドルウェアを組み合わせて使用する必要があります。 - compression:
compression
は、HTTPレスポンスを圧縮するミドルウェアで、特にテキストベースのコンテンツ(HTML、CSS、JavaScriptなど)の圧縮に効果的です。圧縮率は設定可能で、クライアントのAccept-Encodingヘッダーに基づいて自動的に圧縮が行われます。 - express-static-gzip:
express-static-gzip
は、Gzip圧縮された静的ファイルを提供するためのミドルウェアです。圧縮ファイルが存在する場合はそれを優先的に提供し、圧縮ファイルがない場合は未圧縮ファイルを提供します。これにより、圧縮ファイルを事前に用意しておくことで、帯域幅の使用を最小限に抑えることができます。
静的ファイルの提供
- serve-static:
serve-static
は、指定されたディレクトリから静的ファイルを提供するシンプルで柔軟なミドルウェアです。特に圧縮やキャッシュ制御などの機能はありませんが、基本的な静的ファイル提供には十分です。 - compression:
compression
は、静的ファイルと動的ファイルの両方を圧縮できますが、ファイルを提供する機能はありません。ファイル提供のためには、express.static
などの静的ファイル提供ミドルウェアと組み合わせて使用します。 - express-static-gzip:
express-static-gzip
は、指定されたディレクトリから静的ファイルを提供します。特にGzip圧縮されたファイルを優先的に提供するため、事前に圧縮されたファイルを用意しておく必要があります。
キャッシュ制御
- serve-static:
serve-static
は、キャッシュ制御のためのオプションを提供しています。maxAge
オプションを使用して、キャッシュの有効期限を設定することができます。 - compression:
compression
はキャッシュ制御機能を持っていません。キャッシュ制御を行いたい場合は、別途cache-control
ヘッダーを設定する必要があります。 - express-static-gzip:
express-static-gzip
は、キャッシュ制御を行うためのオプションを提供しています。特に、圧縮ファイルと未圧縮ファイルのキャッシュ制御を個別に設定することができます。
Ease of Use: Code Examples
- serve-static:
serve-static
を使用した静的ファイル提供の例const express = require('express'); const serveStatic = require('serve-static'); const app = express(); app.use(serveStatic('public')); // 'public'ディレクトリから静的ファイルを提供 app.listen(3000, () => { console.log('Server is running on port 3000'); });
- compression:
compression
を使用した圧縮の例const express = require('express'); const compression = require('compression'); const app = express(); app.use(compression()); // すべてのレスポンスを圧縮 app.get('/', (req, res) => { res.send('Hello, World!'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
- express-static-gzip:
express-static-gzip
を使用した静的ファイルの圧縮提供の例const express = require('express'); const { expressStaticGzip } = require('express-static-gzip'); const app = express(); app.use(expressStaticGzip('public', { // 'public'ディレクトリから静的ファイルを提供 enableBrotli: true, // Brotli圧縮を有効にする orderPreference: ['gzip', 'br'], // 提供する圧縮形式の優先順位 })); app.listen(3000, () => { console.log('Server is running on port 3000'); });