2017-03-08 5 views
0

this questionによると、express.staticは毎回ハードドライブからファイルを読み込みます。キャッシュされたファイルをメモリに保存したいのですが、変更されないので、たくさんありませんし、メモリをたくさん持っています。このようなコードのためにそうexpress.staticで提供されるファイルをメモリにキャッシュするにはどうすればよいですか?

// serve all static files from the /public folder 
app.use(express.static(path.join(__dirname, 'public'))) 

// serve index.html for all routes 
app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'public/index.html')) 
}) 

がどのように私は特急のキャッシュファイルがメモリにexpress.staticとres.sendFileを通じて提供されていることを確認しますか?

+0

これを見ることができます:[キャッシュ静的](http://stackoverflow.com/questions/32154656/does-express-static-cache-files-in-the-memory) –

+0

@BougarfaouiElhoucineこれは私がすでにリンクしている質問です。私の質問には答えがありません。 – vsjn3290ckjnaoij2jikndckjb

+0

この質問もあります:https://stackoverflow.com/questions/35068471/serving-static-files-in-express-is-it-cachedしかし、トップの答えは、サーバー側ではなくクライアント側のキャッシュに関係しています(これは私が後にしているものです)。 – vsjn3290ckjnaoij2jikndckjb

答えて

1

オペレーティングシステムがこれを処理するので、これは通常問題にはなりません。

現代のオペレーティングシステムはすべて、未使用のRAMを"buffer cache" or "page cache"として使用します。最近使用されたファイルシステムのデータは、そこにRAMに格納されるので、ファイルがメモリにロードされると、その後の読み取りはディスクから実際に読み取られるのではなくメモリから提供されます。

これに依存する利点は、プロセスからのメモリ消費が増加した場合にOSが自動的にバッファキャッシュからデータを削除するため、メモリが枯渇するリスクがないことです。あなた自身のユーザー空間に何かを実装するときに持っている)。

0

短い答えは、少なくともexpress.static()ではできません。サードパーティのモジュールを使用するか、独自のモジュールを作成する必要があります。さらに、ディスクから要求されたファイルを読み取るための呼び出しを傍受するための何らかのフックを要求する、適切な問題追跡ツールで機能要求の問題を開くことができます。

関連する問題