Expressおよびconnectは、非効率的であるため、gzip関数を削除したようです。現在、express-jsを使用したgzipに対する信頼できるソリューションはありますか?
Connect 2.0 は、 new zlib stuff に基づく compress() ミドルウェアのサポートを追加しました。 Node Core API。
package.json
ファイルに2.0を接続するための依存関係を追加することにより、エクスプレスサーバーでこれを利用できます。
{
...
dependencies: {
"connect" : "2.x",
"express" : "2.x",
// etc..
}
}
次に、エクスプレスアプリの構成に次のロジックを適用します。
// Create static file server with gzip support
var app = express.createServer(express.logger());
app.use(connect.compress());
app.use(express.static(__dirname + '/public'));
app.listen(80);
このものはまだかなり新しいであり、ローカルで動作させることはできても、 Heroku クラウドアプリケーションは、git経由でデプロイする場合の事前コミットフック中にCompress 2.xへの依存性について不平を言いました。
-----> Heroku receiving Push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.4.7
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
npm ERR! Error: No compatible version found: connect@'>=2.0.0- <3.0.0-'
ご覧のとおり、彼らはまだ古いバージョンのノード(0.4.7)を使用しています。
UPDATE:
実際、package.json
に対応するengines
セクションを追加することで、Herokuにこれをデプロイさせることができます。
{
...
"engines": {
"node": ">= 0.6.0 < 0.7.0"
}
}
そして、これらはhttp圧縮テスターを使用したときの結果です:
2014年6月更新
ひや、今これを読んでいるなら。上記のものはExpress 2.0にのみ関連することを忘れないでください。
Express 3.0および4.0は、http圧縮を有効にするために異なる構文を使用します。以下のgasolinの投稿を参照してください。
Express 3.0でcompress()がサポートされるようになりました。
var app = express();
// gzip
app.use(express.compress());
// static
app.use("/public", express.static(__dirname + '/public'));
// listen
app.listen(80);
[〜#〜] edit [〜#〜] Express 4.0では、compressは個別のミドルウェアになります。それを使用するには、インストールしてインポートする必要があります。
var compress = require('compression');
app.use(compress());
私もnpmを検索し、例が見つかりました:
https://github.com/tomgallacher/gzippo
gzippoと発音g-zippoは、圧縮を使用してConnectがパフォーマンスを向上させるためのgzipミドルウェアです。
Gzippoは最近開発されました(2日前)。これは良いことだと思います。本番の使用法については説明できません。自分でテスト/ベンチマークする必要があります。また、nodejsモジュールの代わりに、ライブサイトまたはNginxでCDNを使用して静的ファイルをホストすることも考えられます。
Connectは、次のリリースでNodeの新しいzlibをサポートします
Npmを検索した場合、 node-compress に出くわした可能性があります。
Expressにミドルウェアとして挿入するのはそれほど難しくないはずです。