2012-08-02 61 views
3

我有其中的NodeJS服務器將讀取文件並將其流,以響應代碼,它看起來像:的NodeJS ReadStream不讀緩衝區大小字節是一次

var fStream = fs.createReadStream(filePath, {'bufferSize': 128 * 1024}); 
fStream.pipe(response); 

的問題是,節點讀取文件完全相同40960字節一次。但是,如果一次讀取131072(128 * 1024)字節,我的應用程序會更有效率(由於原因不適用於此問題)。

有沒有辦法強制節點一次讀128 * 1024字節?

回答

1

我是新來的,所以我承擔....

我發現這個在節點的來源:

var toRead = Math.min(pool.length - pool.used, ~~this.bufferSize); 

和:

var kPoolSize = 40 * 1024; 

如此看來,在無論您提供什麼,緩衝區大小都限制爲40kb。您可以嘗試更改代碼中的值並重建節點。這可能不是一個非常可維護的解決方案,雖然...

+0

這是正確的。我編輯的值爲128 * 1024並重建節點。它仍然沒有完成這項工作,但它仍然更好。它通常在一次讀取中讀取大約128000字節,然後在下一次讀取中讀取剩餘的餘額(128k - 〜128000)。這有點奇怪。 – 2012-10-08 01:31:27