我是node.js的新手,仍然試圖理解它背後的哲學。據我所知,node.js只在一個進程中運行,而不是php,它爲每個請求打開一個進程\線程。儘管你可以說節點對於I/O來說是「非阻塞」的,但它阻塞了請求(由於每個新請求都沒有新的線程,所以請求堆積起來),理論上如果你寫了一個node.js應用程序對於遇到麻煩的每個請求都不能很快處理。Node.js非阻塞性質
我的問題是這樣的 - 我如何判斷某個請求的處理時間是否過長,以至於它會阻止所有其他請求太長而妨礙我的應用的性能?
我知道服務器上的所有「重」操作(db查詢,文件系統搜索)都是通過回調完成的,因此無法阻止節點。但是,如果由服務器同步完成的處理請求的所有其他操作只需要很長時間?
例如,服務器需要寫很多html到響應中。然後會發生什麼?
節點程序員如何知道他是否對某個請求做了太多的事情(以阻塞的方式),它是經驗,直覺還是有明確的指導方法?
我對Node.js也很新,但我認爲你應該對所有操作使用異步回調。您不應該在Node.js服務器上進行任何同步操作。 – Bardo
假設你的node.js寫了一個html文件 - long.html,它有很多很多的行,你這樣做的方式(盡我所知)是通過將請求路由到一些處理器,最終必須執行一些處理比如:response.write(「
......所以就我所見,你在某些時候不能這樣做,至少據我所知 –你的處理程序要做的是返回將HTML傳遞給一個回調函數,這些回調函數將把這個HTML文件發佈到客戶端,但是不會從你的服務器代碼中提取出來。 – Bardo