Express.js (Node.js):静态文件服务到底如何工作?

lwo*_*ood 4 nginx node.js express

我认为使用 Express 提供静态文件(html、mov、css、jpg 等)需要在 nginx 中进行一些修改。

但静态文件似乎在 Express 中“正常工作”。不需要什么特别的东西。

  • Express 静态文件服务到底如何工作?

  • 为什么有些人提倡静态文件使用nginx?这一定是有充分理由的。(示例: https: //gist.github.com/joemccann/644282

  • 另外,当下载静态文件时,Node.js 事件队列是否会被阻塞?我想不会,但为什么不呢?

Nit*_*ked 6

静态文件服务是通过使用express.static()中间件以 Express 方式完成的。该中间件将在磁盘上查找您可能需要的文件,如果找到,将通过写入 http 标头和内容来为它们提供服务。为了使所有这些工作正常,您必须app.use(express.static(...))在中间件堆栈中进行操作。

提倡使用 ngnix 有几个原因,最重要的原因是:

  1. 速度快很多倍

  2. 你有更多的灵活性。使用挂载点、重写规则、磁盘位置等。更改 ngnix 配置比更改代码更容易。此外,这种灵活性允许 ngnix 处理部分或全部静态文件,同时将其他工作(动态内容?静态文件的其他部分)委托给其他人(您的 Node.js 进程、CDN 等)

节点请求队列不会被阻塞,这就是节点的工作方式:请求被“快速”异步处理,从而释放单个线程来执行更多工作,例如接受和处理新请求。您的文件将在“后台”发送,完成后您(或者实际上是发送文件的代码)会收到通知。