我建立了一个ExpressJS服务器,该服务器对对象数组执行计算。数组放置在请求(POST请求)的主体中,我注意到,第一次启动服务器并发送请求时,我从计算中收到了预期的结果。现在,当我向服务器发送完全相同的请求(而无需重新启动服务器)时,我收到的响应要快得多。我认为是这种情况,因为ExpressJS可能正在缓存请求/响应。
我查看了ExpressJS文档,以详细了解ExpressJS中的缓存工作原理,但找不到任何内容。有人可以解释一下ExpressJS服务器接收请求然后随后接收到完全相同的请求时的缓存如何工作吗?有没有办法完全禁用缓存?
最佳答案
Express.js默认情况下不执行任何缓存。您看到的效果可能是由于运行Node.js / Express.js代码的Javascript V8引擎中的JIT(及时编译器)引起的。
启动服务器时,首先将Javascript代码编译为机器代码。在这一步中,JIT将对您的代码进行一些“良好”的优化,但不会进行“完美”的优化。在运行时(服务器正在运行时),JIT将使用各种漂亮的技巧进一步优化代码。例如,比起很少执行的代码,执行频率更高的代码(“热代码”)将得到更好的优化。
有关更多信息的一些参考:
https://www.quora.com/What-should-every-Javascript-programmer-know-about-the-V8-Engine
Javascript Engines Advantages
JIT compiler vs offline compilers
关于node.js - 解释ExpressJS中缓存的工作方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33381895/