Rails 默认缓存的工作原理



我有一个应用程序,有一定数量的用户使用。在应用程序的某个时刻,我这样做

Rails.cache.write('token', ['token'])

另一方面,我读了Rails.cache.read('token').但我想知道:Rails.cache是全球性的吗?我的意思是,用户是否会访问相同的令牌。假设用户 A 记录,并且他的令牌已保存,然后用户 B 日志,他的令牌以相同的方式保存。在将来的操作中,用户 A 是否会访问用户 B 编写的令牌?

是的,即使对于不同的用户,缓存也是全局的。有一个关于缓存的指南。

这背后是有原因的。缓存实际上是为应用程序设计的,以更快地响应甚至不同用户发出的类似查询。通常,片段(甚至整个页面(在更改后(通过che"缓存失效"机制(呈现,然后仅从缓存中提供已呈现的对象。

例如,这在新闻网站上非常有效,其中包含文章的页面仅呈现给第一个读者,并进一步呈现绕过页面生成并直接从缓存中提供已呈现的页面,从而大大增加了服务器可以承受的阅读器数量(而不是在每个请求上生成页面(。

如果

只有一个缓存服务,则对于任何用户,相同的缓存键将始终指向相同的数据(如果它没有更改(。如果有多个(例如,如果多个应用实例在具有负载均衡器的同一数据库上运行(,如果应用设计正确,结果应该仍然相同。

任何特定于用户的东西只能存储在会话或cookie中(我什至见过基于cookie会话(。

相关内容

最新更新