【问题标题】:Why laravel store session after the response has been sent to the browser?为什么在将响应发送到浏览器后 laravel 存储会话?
【发布时间】:2016-11-01 12:52:12
【问题描述】:

问题很明确。正如 laravel documentation 所说:

例如,Laravel 中包含的“会话”中间件将会话数据写入存储响应已发送到浏览器

我猜是因为节省了响应时间,但我不确定。

【问题讨论】:

  • 我想只有 Taylor Otwell 才能回答这个问题。

标签: php laravel session laravel-5


【解决方案1】:

检查StartSession 中间件的handle 方法,您可以看到,当使用“cookie”驱动程序进行会话存储时,数据会在响应发送到浏览器。

但是,正如您所说,当使用例如“文件”或“数据库”会话驱动程序时,数据会在响应发送到浏览器后写入存储,使用 terminate 方法.

这可能是出于性能原因:应用程序的主要关注点是尽快将响应发送给客户端。如果我们使用 cookie 驱动程序,Laravel 在发送响应之前以某种方式“强制”将数据存储到存储中,因为会话信息需要存储在与响应一起发送的 cookie 中。而在其他情况下,laravel 可以延迟写入存储,尽快发送响应

【讨论】:

    【解决方案2】:

    这是我能想到的唯一原因。

    如果您需要将某些内容推送到会话并使其立即从会话中可用,您可以使用以下...

    Session::now($key, $value);
    

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2016-08-27
      • 1970-01-01
      相关资源
      最近更新 更多