【问题标题】:Storing state across requests from the same user跨来自同一用户的请求存储状态
【发布时间】:2013-08-01 23:02:43
【问题描述】:

我了解状态可以跨 cookie 和 session[] 哈希存储。

以下哪项可用于存储来自同一用户的 ACROSS 请求状态?选择所有适用的。

  1. Cookie
  2. session[] 哈希
  3. 由控制器方法设置的实例变量
  4. 由控制器方法设置的类变量

这个测验问题的答案是 (1) 和 (2)。我的问题是:为什么 (3) 和/或 (4) 不能跨来自同一用户的请求存储状态?

【问题讨论】:

    标签: ruby-on-rails ruby controller session-state


    【解决方案1】:

    (3) 不能跨请求存储状态。每次请求进入您的 Rails 应用程序时,都会创建一个控制器实例并在其上调用相应的操作方法。处理完请求后,控制器实例将被丢弃,并为下一个请求创建一个新实例。

    (4) 技术上可以跨请求存储状态,但无论哪个用户发出请求,数据都将在控制器的所有实例之间共享。它也无法从其他控制器访问,如果服务器重新启动,它会丢失,并且如果您的 Rails 应用程序的多个实例同时运行(在生产场景中很常见),类变量的内容将不会在它们之间共享。

    详细说明为什么这种事情是个坏主意:https://stackoverflow.com/a/1029798/742690

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多