當文件發生變化時,爲什麼需要重啓NodeJS服務器?像Apache,IIS,nginx等其他服務器是否也需要這樣的服務器,或者它們能夠自動重啓?爲什麼節點服務器必須重新啓動文件更改?
回答
你不說你正在談論哪些文件,所以我會提及幾個不同類型的文件的問題。
對於構成您的node.js服務器的Javascript代碼的Javascript文件,node.js是一個持續運行的服務器。這意味着當服務器啓動時,它會將您的Javascript代碼解析到內存中,然後開始執行它。該服務器進程一直運行,直到您停止。因爲node.js是一個持續運行的服務器,所以如果你想更新組成服務器代碼的Javascript文件,你必須停止服務器並重啓服務器,讓它加載和重新分析新更改的源文件。
這與Apache之類的PHP有很大的不同,它從頭開始爲每個單獨的請求運行給定的PHP腳本。由於沒有長時間運行的PHP應用程序,並且每個PHP腳本都是從頭開始爲每個請求啓動的,因此它可以在不重新啓動Apache服務器的情況下自動選擇新更改的PHP腳本。如果你有一個完全用PHP編寫的長時間運行的服務器,那麼它可能會具有與node.js類似的行爲。
而且,如果您想升級Apache服務器代碼,則必須重新啓動Apache(與node.js一樣)。
您可以將node.js視爲Apache + PHP,因爲兩者的功能通常都是由node.js自身完成的。它將Web服務器功能與Web應用程序邏輯集成在一起,而與Apache + PHP分開。
對於由服務器提供服務,並交付給瀏覽器的HTML文件或JavaScript文件,則一般不必重新啓動服務器,這些文件的最新版本在隨後的瀏覽器請求送達。但是,這取決於您正在使用哪個服務器框架以及它如何實現文件緩存。這種行爲並不是特定於node.js,而是將其內置於您用於通過Web服務器提供文件的任何代碼中(例如Express或類似的東西)。
感謝您的簡要解釋。 – rajagopalx
- 1. 爲什麼更新mysql用戶權限後必須重新啓動服務?
- 2. 更改登錄密碼後是否必須重新啓動mysql服務器?
- 3. 編輯節點js文件而不重新啓動服務器
- 4. tomcat服務器:Tomcat服務器是否必須每天重新啓動?
- 5. 爲什麼我必須重新啓動Django的fastcgi進程?
- 6. docker-compose.yml:爲什麼重新啓動「否」必須帶引號?
- 7. 爲什麼Gulp在重新啓動Angular服務器時還原所有更改?
- 8. 更改節點服務器
- 9. 爲什麼更新模型文件時服務器需要重啓?
- 10. (Rails)重新加載「lib」文件而不必重新啓動服務器...?
- 11. 爲什麼必須安裝Windows服務?
- 12. 重新啓動服務器後重新啓動WCF服務
- 13. 爲什麼我在更新路由或任何靜態文件後必須重新啓動playframework
- 14. 爲什麼我總是需要重新啓動Rails服務器?
- 15. 無法重新啓動節點服務器
- 16. 使節點服務器重新啓動證明
- 17. 帶節點和護照的JWT:重新啓動服務器
- 18. 無法使用節點服務器/ index.js重新啓動我的服務器
- 19. 爲什麼在修改JSP時需要重新啓動App Engine服務器?
- 20. 重新部署WCF服務時是否必須重新啓動IIS?
- 21. EC2 ubuntu啓動節點服務器在重新啓動不起作用
- 22. Google App Engine - 我必須重新啓動開發服務器,只要對servlet進行更改
- 23. Aptana中的Django:必須重新啓動服務器以更改Python代碼才能生效
- 24. php5-cgi.ini中的post_max_size - >我必須重新啓動服務器嗎?
- 25. 當jenkins必須重新啓動?
- 26. Django的:重新啓動共享服務器時更改MVC Python文件
- 27. 如果我複製一些新文件,我必須重新啓動服務器嗎?
- 28. 重新啓動服務器後重新啓動Docker容器
- 29. 更改Cherrypy端口並重新啓動web服務器
- 30. 爲什麼Nightwatch啓動Selenium服務器?
有助於定義服務器行爲(由Node.js執行)的文件與服務器可能爲客戶端提供的文件之間存在差異。如果您要下載並修改Apache或nginx的源代碼,那麼您必須重新啓動(並重新生成)它們才能看到這些更改的生效。 Node.js正在執行的腳本也是如此。 (Node.js與Apache等不是一個服務器,它可以幫助你定義自己的服務器應用程序 - 你自己的Apache等) –
雖然你應該明白爲什麼服務器需要重新啓動,你可以使用[nodemon](https://www.npmjs.com/package/nodemon)繞過這個麻煩。這是一個小腳本,用於檢測文件更改並相應地重啓服務器(對開發環境非常有用)。 – Matt