express压缩中间件是否压缩请求或响应?

express压缩中间件是否压缩请求或响应?,express,Express,每个express压缩文档: 当将此模块与express或connect一起使用时,只需应用程序即可。使用模块时,请选择您喜欢的高度。通过中间件的请求将被压缩 在理解express中间件流时,我对实际得到压缩的内容感到困惑。文件中说所有的请求都将被压缩,但评论中说“压缩所有的响应” 压缩发送给客户机的响应是有意义的。如果是压缩响应,如何将其设置为文档中所述的最高级别?中间件通过接管所有写入响应流的方式(如res.end、res.write等)工作。。然后压缩通过这些方法发送的数据,然后再通过网络

每个express压缩文档:

当将此模块与express或connect一起使用时,只需应用程序即可。使用模块时,请选择您喜欢的高度。通过中间件的请求将被压缩

在理解express中间件流时,我对实际得到压缩的内容感到困惑。文件中说所有的请求都将被压缩,但评论中说“压缩所有的响应”


压缩发送给客户机的响应是有意义的。如果是压缩响应,如何将其设置为文档中所述的最高级别?

中间件通过接管所有写入响应流的方式(如res.end、res.write等)工作。。然后压缩通过这些方法发送的数据,然后再通过网络发送出去。开源的美妙之处在于,你可以看看自己,看看它到底在做什么

因此,它压缩了服务器发送给客户机的响应。尽可能高的放置意味着对于给定的响应,它将只压缩在该中间件为该请求运行之后发送的响应

因此,如果您有一个将响应发送回客户端的请求处理程序或中间件,并且该请求处理程序或中间件在该压缩中间件运行之前在该特定请求上运行,那么压缩中间件将不会连接,也无法对该请求进行压缩。因此,您可以将此中间件放在任何其他中间件或请求处理程序之前,您希望压缩它们发送的响应


考虑这一点的另一种方式是,该中间件不会全局安装自身。它与每个传入的请求挂钩。因此,在发送响应之前,您必须确保它已连接。否则,您的响应将在压缩连接之前发送,并且您的响应将不会被压缩。

中间件通过接管您将写入响应流的所有方式来工作,例如res.end、res.write等。。然后压缩通过这些方法发送的数据,然后再通过网络发送出去。开源的美妙之处在于,你可以看看自己,看看它到底在做什么

因此,它压缩了服务器发送给客户机的响应。尽可能高的放置意味着对于给定的响应,它将只压缩在该中间件为该请求运行之后发送的响应

因此,如果您有一个将响应发送回客户端的请求处理程序或中间件,并且该请求处理程序或中间件在该压缩中间件运行之前在该特定请求上运行,那么压缩中间件将不会连接,也无法对该请求进行压缩。因此,您可以将此中间件放在任何其他中间件或请求处理程序之前,您希望压缩它们发送的响应


考虑这一点的另一种方式是,该中间件不会全局安装自身。它与每个传入的请求挂钩。因此,在发送响应之前,您必须确保它已连接。否则,您的响应将在压缩连接之前发送,并且您的响应不会被压缩。

中间件将根据给定的选项,尝试压缩通过中间件的所有请求的响应体

该中间件永远不会压缩包含无transform指令的缓存控制头的响应,因为压缩将转换主体


来源:

中间件将根据给定的选项,尝试压缩通过中间件的所有请求的响应体

该中间件永远不会压缩包含无transform指令的缓存控制头的响应,因为压缩将转换主体

来源:

中间件压缩通过中间件的所有给定请求的响应体。中间件不会压缩包含无转换指令的缓存控制头的响应。这是因为这样做会改变身体

在理解express中间件流时,我对实际得到压缩的内容感到困惑。文件中说所有的请求都将被压缩,但评论中说“压缩所有的响应”

这是一种误解。压缩中间件实际做的是压缩通过中间件的所有给定请求的响应体。它不压缩请求,而是压缩服务器发送给客户机的响应体

基于中间件流,压缩中间件应该放在expressjs应用程序配置的最开始,以便它先于其他中间件和路由。这是为了确保您的请求首先通过中间件,并在响应之前压缩响应体 正在发送onse。

中间件压缩通过中间件的所有给定请求的响应体。中间件不会压缩包含无转换指令的缓存控制头的响应。这是因为这样做会改变身体

在理解express中间件流时,我对实际得到压缩的内容感到困惑。文件中说所有的请求都将被压缩,但评论中说“压缩所有的响应”

这是一种误解。压缩中间件实际做的是压缩通过中间件的所有给定请求的响应体。它不压缩请求,而是压缩服务器发送给客户机的响应体


基于中间件流,压缩中间件应该放在expressjs应用程序配置的最开始,以便它先于其他中间件和路由。这是为了确保您的请求首先通过中间件,并在发送响应之前压缩响应正文。

但是,当响应尚未构建时,他们如何通过将响应放在最顶端来压缩响应?@Zanko覆盖响应对象中负责将数据写入的方法?他们用自己的方法代替它们,在通过网络实际发送之前压缩输入流?它应该解释为什么把它放在最上面会覆盖所有的响应。但是当响应还没有构造好的时候,他们怎么能通过把响应放在最上面来压缩响应呢?@Zanko通过覆盖响应对象中负责向其中写入数据的方法?他们用自己的方法代替它们,在通过网络实际发送之前压缩输入流?它应该解释为什么把它放在最上面会覆盖所有的回答。
var compression = require('compression')
var express = require('express')

var app = express()

// compress all responses
app.use(compression())