当文件发生变化时,为什么需要重启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. 更新htaccess文件后是否必须重新启动服务器
- 3. 更改登录密码后是否必须重新启动mysql服务器?
- 4. 节点 - 编辑特定文件后重新启动服务器
- 5. 编辑节点js文件而不重新启动服务器
- 6. 重新启动后发生服务器修改,为什么?
- 7. 更改.js文件时,Node.js不会重新启动服务器?
- 8. tomcat服务器:Tomcat服务器是否必须每天重新启动?
- 9. 为什么移动设备必须定期检查服务器的更新?
- 10. 为什么Android Debug Bridge(adb)必须经常重新启动?
- 11. 为什么我必须重新启动Django的fastcgi进程?
- 12. docker-compose.yml:为什么重新启动“否”必须带引号?
- 13. 为什么Gulp在重新启动Angular服务器时还原所有更改?
- 14. 为什么我必须重新启动我的服务器之后db:重置在rails?
- 15. 用更改的文件重新启动节点子进程
- 16. 更改节点服务器
- 17. 自动重新启动节点服务器
- 18. 在Node.js中更新文件而不重新启动服务器
- 19. 为什么Servlet,.html文件在服务器重启后没有更新?
- 20. 为什么更新模型文件时服务器需要重启?
- 21. 为什么必须安装Windows服务?
- 22. (Rails)重新加载“lib”文件而不必重新启动服务器...?
- 23. 必须在更改PATH后重新启动
- 24. 重新启动服务器后重新启动WCF服务
- 25. 为什么我总是需要重新启动Rails服务器?
- 26. 为什么我在更新路由或任何静态文件后必须重新启动playframework
- 27. Erlang新手:为什么我必须重新启动才能加载新代码
- 28. 无法使用节点服务器/ index.js重新启动我的服务器
- 29. 无法重新启动节点服务器
- 30. 使节点服务器重新启动证明
有助于定义服务器行为(由Node.js执行)的文件与服务器可能为客户端提供的文件之间存在差异。如果您要下载并修改Apache或nginx的源代码,那么您必须重新启动(并重新生成)它们才能看到这些更改的生效。 Node.js正在执行的脚本也是如此。 (Node.js与Apache等不是一个服务器,它可以帮助你定义自己的服务器应用程序 - 你自己的Apache等) –
虽然你应该明白为什么服务器需要重新启动,你可以使用[nodemon](https://www.npmjs.com/package/nodemon)绕过这个麻烦。这是一个小脚本,用于检测文件更改并相应地重启服务器(对开发环境非常有用)。 – Matt