![]() |
1
2
Express服务器的顶级代码通常在启动服务器时运行一次。如果有任何处理程序引用该顶级声明的变量,则该顶级声明的变量是持久的。 考虑使用JavaScript的客户端页面是如何工作的——页面加载,然后JavaScript运行。如果您将选项卡保持打开状态几个小时,然后再返回,您将看到在pageload上声明的变量在返回时仍然存在。这里也发生了类似的事情,只是持久化环境位于服务器上,而不是客户端页面上。 启动Express server的代码—即
下面的一切都无法运行 每次向服务器发出请求时 . 相反,它运行 一旦 ,当服务器启动时,然后在发出请求时,会调用请求处理程序,例如内部的回调
因此,在顶层声明的变量是持久的(甚至跨不同的请求),因为服务器环境是持久的。 这就是说,Heroku需要记住的一点是,对于他们的免费和廉价层,如果在一段时间内(可能是30分钟)没有向你的应用程序发出请求,Heroku将关闭你的服务器,关闭dyno直到发出另一个请求,这时他们将再次启动你的服务器,这将再次运行顶级代码。所以当你 有时 查看一个顶层变量,该变量的变异值似乎在多个请求中保持不变,如果您的Heroku计划不能保证服务器100%正常运行,那么就不能指望这个变量。 |
![]() |
AlaaKudo810 · 无法更新猫鼬中的对象 1 年前 |
![]() |
Foobar · 如何在Fastify中为请求附加“项目”密钥? 1 年前 |
![]() |
chrispytoes · 从服务器端获取登录用户 1 年前 |