2017-03-08 69 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中,所以一旦文件被加載到存儲器中,隨後的讀取將從存儲器中被提供,而不是實際從磁盤讀取。

依賴於此的優勢在於,當流程內存消耗增加時,操作系統將自動清除緩衝區緩存中的數據,從而避免內存耗盡這些流程的風險(正如您可能當你在用戶空間中實現某些東西時)。

0

簡短的回答是你不能,至少不能用express.static()。您將需要使用第三方模塊或編寫自己的模塊。另外,您可以在相應的問題跟蹤器上打開一個功能請求問題,要求某種掛鉤攔截調用以從磁盤讀取請求的文件。

相關問題