前端/移动开发面试题更新 2026-08-05

在 Express 框架中,你会采取哪些步骤来处理压缩的响应数据?请描述从客户端请求到响应返回的完整流程。

前端/移动开发性能优化技术原理ExpressNode.js

考察说明

考察对 Express 中压缩响应机制的理解和实际操作能力。

回答思路

  1. 【回答框架 1】Express 中处理压缩响应主要依赖中间件 compression。客户端发送请求时,会在请求头中携带 Accept-Encoding 字段,表明支持的压缩算法(如 gzip、deflate、br)。服务器端通过 compression 中间件,根据该字段选择合适的压缩方式。
  2. 【回答框架 2】使用方式:在应用入口处引入 compression 中间件,并挂载在路由之前,例如 app.use(compression())。该中间件会自动检查响应内容,对于符合条件的响应进行压缩,并设置响应头 Content-Encoding。
  3. 【回答框架 3】compression 中间件默认会压缩超过一定大小的响应(阈值可配置),并且会忽略已经压缩过的内容(如图片等)。它使用 Node.js 内置的 zlib 模块实现压缩,支持 gzip、deflate 等方法。
  4. 【回答框架 4】若客户端不支持压缩或未发送 Accept-Encoding 头,则中间件不启用压缩,返回原始数据。此外,也可通过配置 filter 函数自定义哪些类型的响应需要压缩。
  5. 【回答框架 5】在压缩时,可能需要考虑性能开销,特别是对 CPU 的影响,因为压缩是 CPU 密集型操作。可以通过缓存压缩结果或使用 Brotli(如果支持)来优化。
  6. 【关键点 1】使用 compression 中间件,挂载在路由之前。
  7. 【关键点 2】压缩机制基于请求头 Accept-Encoding 和 zlib 模块。
  8. 【关键点 3】可配置压缩阈值和 filter 函数控制压缩行为。
  9. 【关键点 4】压缩会增加 CPU 开销,需权衡性能。
  10. 【关键点 5】已压缩内容(如图片)应避免重复压缩。
  11. 【易错点 1】忽视请求头 Accept-Encoding,导致压缩不生效。
  12. 【易错点 2】对所有响应都压缩,可能降低性能并浪费资源。
  13. 【易错点 3】未处理缓存导致重复压缩,增加 CPU 负担。