2017-03-31 5 views
0

私は非常に簡単な高速サーバーを持っています。 compressionがあり、ファイルを提供するのにstatic-serveを使用します。私はcacheControlをfalseに設定しているので、ETagのみを使用します。Expressサーバーは304応答を返すのに500msかかる

サーバーはファイルの304を返します(これは必要です)が、これを行うには約500msかかります。実際にファイルを送信するのにかかる時間と同じです。

スピードアップのために(ワニスやnginxのようなもの以外の)いくつかの設定がありますか?

サーバーには、約6種類のファイルがあり、すべて静的です。

Expressサーバコード:

const path = require('path'); 
const express = require('express'); 
const compression = require('compression'); 
const serveStatic = require('serve-static'); 

const PORT = process.env.PORT || 9095; 

const app = express(); 

app.use(compression({ threshold: 0 })); 

app.use(/regex pattern here/, serveStatic(path.join(__dirname, '../dist/client/assets'), { cacheControl: false })); 

app.listen(PORT, (error) => { 
    console.log(error || `Listening on port ${PORT}`); 
}); 

答えて

0

の中に深くダイブです。これは、トリックはNODE_ENV=productionで明示サーバーを実行することですが判明します。

明らかに、これはExpressにいくつかの最適化を実行するように指示していますが、そのうちの1つは私が望むものと正確に一致しているようです。約500msから約40msに戻り、304を返しました。これははるかに優れています。

参照:https://expressjs.com/en/advanced/best-practice-performance.html#in-environment

1

ノードサーブ静的モジュールは、ファイルの内容からハッシュを計算する必要があるので、あなたは、静的なコンテンツを提供するためにnginxのまたは類似のものを使用する必要があります。これは、特にローカルマシン上でのファイルの提供よりも遅いです。ここで はサーブ静的力学https://evanhahn.com/express-dot-static-deep-dive/

+0

なぜハッシュを計算する必要がありますか? –

+0

@TamasHegedus私は私の答えを更新しました –

+0

答えをありがとう。しかし、この場合、ワニスやnginxを使わずに何かを探しています。メモリ上のすべてのものをキャッシュするためのコードを書くだけで、ファイルがほとんど提供されない可能性があります。 – samanime

関連する問題