Laravel 终端中间件和后中间件之间的差异

Laravel 终端中间件和后中间件之间的差异,laravel,laravel-5.6,laravel-middleware,Laravel,Laravel 5.6,Laravel Middleware,需要指出的是,有两种类型的中间件:前中间件和后中间件。在处理请求之前处理中间件之前,以及在处理请求之后处理中间件之后 但终端中间件的功能与后中间件完全相同。那么这两者的核心区别是什么呢?谢谢。终端中间件在响应准备就绪后运行 在中间件之后在请求之后但在准备响应之前运行 例如,假设您想在所有或一组响应上设置一个响应头,您可以使用after中间件来实现。因为您需要在呈现请求之后但在返回响应之前设置标头。 但是,如果要将会话数据存储在存储器中,可以使用terminable middlware 这是Ter

需要指出的是,有两种类型的中间件:前中间件和后中间件。在处理请求之前处理中间件之前,以及在处理请求之后处理中间件之后


但终端中间件的功能与后中间件完全相同。那么这两者的核心区别是什么呢?谢谢。

终端中间件在响应准备就绪后运行

在中间件之后
在请求之后但在准备响应之前运行

例如,假设您想在所有或一组响应上设置一个响应头,您可以使用after中间件来实现。因为您需要在呈现请求之后但在返回响应之前设置标头。 但是,如果要将会话数据存储在存储器中,可以使用terminable middlware

这是
TerminableInterface
中的终止方法:

/**
 * Terminates a request/response cycle.
 *
 * Should be called after sending the response and before shutting down the kernel.
 */
public function terminate(Request $request, Response $response);

您在Terminable middleware的terminate方法中接收到请求和响应对象,但是更改响应不会生效,因为响应已经返回。

谢谢您的解释@Farzin。@Farzin Terminable middleware会减慢对浏览器的响应吗?假设我在终端中间件中调用外部API,这会减慢我的响应速度吗?