18
|
Daniel Beardsley · 技术社区 · 15 年前 |
![]() |
1
18
简单的答案是没有。每个请求都被视为一个独立的事件,除了存储在用户会话和任何外部数据库、缓存或文件存储中的内容之外,没有状态信息被传递。最好是在设计应用程序时考虑到这一点,而不要仅仅因为设置了它们就期望事情能够持续下去。 更复杂的情况是有些事情确实会持续下去。例如,您可以在一个控制器上创建一个类变量,它将按预期从一个请求传递到下一个请求。关键是,这只适用于包含在该进程中的控制器的单一实例,而不适用于由其他进程提供服务的请求。如果需要缓存,请使用rails.cache基础设施,并避免自己的黑客攻击。 一个典型的生产环境是一个复杂的、不断变化的事物,在那里过程不断地被创建和破坏,并且没有办法提前确定哪一个过程最终将服务于一个特定的请求。由于许多部署不仅涉及一台机器上的多个进程,而且涉及多台机器,因此实际上没有实际的方法来创建应用程序范围的单例对象。 你能做的最好的事情就是在缓存引擎上构建一个层,在这个层中,你的singleton对象仅仅是一个包装器,用于从缓存中获取和写入函数。这使您在保持进程间一致性的同时获得了singleton对象的外观。 |
![]() |
2
0
我知道这篇文章很旧,但是对于谁在寻找解决方案,可以使用rails.cache,如下所示:
我要做的是在一条路线上接收一个请求,发送一个GET到Zapier,然后在另一条路线上等待答案。Rails为每个请求打开一个新的线程,因此我在RAM中以“key:value”格式写入数据。 |
![]() |
3
-4
网络是一种无状态的媒介。除非您有目的地在会话中保存数据或在GET或POST中传递数据,否则每个Web请求都以空白的石板开始。一旦页面被传递到Web浏览器,用当前请求创建的任何对象都将被销毁。 |
![]() |
Axel Kennedal · Redux持续立即崩溃 7 年前 |
![]() |
Rougher · Spark持久化函数在数据集重用中的应用 7 年前 |
![]() |
Araf · 当我尝试插入通知类型对象时,子实体也尝试插入 7 年前 |
![]() |
gschambial · 尝试级联持久子实体时出现持久异常 7 年前 |
![]() |
juliam · JSON在发布对象时递归调用该对象 7 年前 |
![]() |
Pj- · 搁置模块不适用于“with”语句 7 年前 |
![]() |
Dmitry Senkovich · JPA中的事务同步与事务关联 7 年前 |