我有一定数量的用户使用的应用。在应用程序的某个时刻,我这样做
Rails.cache.write('token', ['token'])
另一方面,我是Rails.cache.read('token')
读到的。但我想知道:Rails.cache
是全球性的吗?我的意思是,用户是否会访问相同的令牌。假设用户A记录,他的令牌被保存,然后用户B记录,他的令牌以相同的方式保存。在将来的操作中,用户A是否会访问用户B写的令牌?
答案 0 :(得分:2)
是的,即使对于不同的用户,缓存也是全局的。有a guide about caching。
背后有一个原因。缓存实际上是为应用程序设计的,以便更快地响应即使是不同用户发出的类似查询。通常,片段(甚至整个页面)在更改之后(通过che"缓存失效"机制)呈现,然后仅从缓存中提供已呈现的对象。
例如,这在新闻网站上效果非常好,其中包含文章的页面仅针对第一个阅读器呈现,并进一步呈现绕过页面生成并直接从缓存提供已呈现的页面,大大增加了数量服务器可以承受的读者(与每次请求时生成页面相反)。
如果只有一个缓存服务,则相同的缓存密钥将始终指向任何用户的相同数据(如果它不会更改)。如果有多个(例如,如果多个应用实例在带有负载均衡器的同一个数据库上运行),如果应用设计正确,结果应仍然相同。
任何特定于用户的内容只能存储在会话或 Cookie 中(我甚至可以看到基于Cookie的会话)。