web-dev-qa-db-ja.com

express.static()はファイルをメモリにキャッシュしますか?

ExpressJS for NodeJSでは、次のことができます。

app.use(express.static(__dirname + '/public'));

すべての静的CSS、JS、および画像ファイルを提供します。私の質問は次のとおりです。

1)その場合、Expressはサーバーのメモリにファイルを自動的にキャッシュしますか、それともリソースの1つが提供されるたびにハードディスクから読み取りますか?

2)これを行うと、ExpressはデフォルトでETagを使用して、リソースをクライアントのハードディスクに保存しますか、それともクライアントのメモリのみに保存しますか?

26
Chong Lip Phang
  1. 静的ミドルウェアはサーバー側のキャッシュを行いません。クライアント側のキャッシュの2つの方法、ETagとMax-Ageを実行できます。

ブラウザがページにETagを見つけると、それをキャッシュします。ブラウザが次にページをロードするときに、ETag番号の変更を確認します。ファイルがまったく同じで、そのETagも同じである場合、サーバーはすべてのバイトを再度送信する代わりにHTTP 304( "not modified")ステータスコードで応答し、帯域幅を節約します。 Etagはデフォルトでオンになっていますが、次のようにオフにできます。

app.use(express.static(myStaticPath, {
  etag: false
}))

Max-ageはmax-ageを一定の時間に設定するため、ブラウザーは1日が経過した後にのみそのリソースを要求します。

app.use(express.static(myStaticPath, {
  maxage: '2h'
}))

詳細については、これを読むことができます 記事

  1. デフォルトではハードドライブ上にありますが、誰かが this のようなものを使用できます
41