SEO 百科

Node 运行时

本页目录

Node 运行时

Node 运行时 是运行环境,让 JavaScript 在服务器侧执行,采用事件循环处理并发,非阻塞 IO 是它的默认工作方式[1]。建站场景里它出现在两类项目上:现代前端框架的服务端渲染与静态生成,以及自己写的接口与渲染服务。

与 PHP-FPM 的分别是并发模型

PHP-FPM 用一组进程池接请求,一个 worker 同时处理一个请求[2]。Node 是单线程事件循环,等待 IO 时切换去处理别的请求,CPU 密集的活会把循环堵住[1]。

这条差别决定了调优方向:Node 侧要盯的是长任务与同步操作,PHP 侧要盯的是进程数与执行时间。

部署上的四条

进程守护。用系统服务或进程管理器看门,僵死后要自动重启。

多核利用。单进程只吃一个核,多数框架靠多进程或集群模式把核用满[1]。

反向代理。Nginx 收到请求后转到本机端口,静态文件由代理直接返回,不绕过应用[3]。

版本固定。Node 主版本之间有行为差异,锁版本并留升级窗口[1]。

与渲染的关系

用框架做服务端渲染时,页面在运行时里被组装成 HTML 再返回,抓取端不必等浏览器执行脚本;纯客户端渲染时,内容要等 Google 的渲染步骤才可见,缺了这一步可能看不到内容[4]。同一框架还能选静态生成,把 HTML 提前生成成文件,运行时不再参与每次请求[5]。

对搜索而言,越早拿到完整 HTML 越稳,这条比选哪个运行时更重要。

常见误用

第一种是在请求路径里做重计算或同步 IO,事件循环被卡住,全站在同一时刻变慢[1]。第二种是只起一个进程就跑生产。第三种是内存泄漏没有监控,运行几天后开始报 502,抓取端表现为服务器错误[6]。

附录

参见

参考资料

官方(境外)

  1. 《node.js 文档》,OpenJS Foundation。
  2. 《PHP-FPM 文档》,PHP。
  3. 《nginx documentation》,NGINX。
  4. 《关于 Google 搜索运作方式的深度指南》,Google 搜索中心。
  5. 《修正延迟加载的内容》,Google 搜索中心。
  6. 《Google 搜索中的 HTTP 与网络错误》,Google 搜索中心。

外部链接