2014-12-21 68 views
0

我有一个应用程序由一定数量的用户使用。在应用程序的某个时刻,我这样做如何导轨默认缓存工作

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

,并在另一个,我通过Rails.cache.read('token')阅读。但我想知道:Rails.cache是全球性的事情吗?我的意思是,用户是否会访问相同的标记。比方说用户A日志,并且他的令牌被保存,然后用户B日志,他的令牌以相同的方式被保存。在未来的行动中,用户A会访问用户B写的令牌吗?

回答

2

是的,即使对于不同的用户,缓存也是全球性的。有a guide about caching

背后有一个原因。缓存实际上是为了让应用程序更快地响应不同用户发布的类似查询而设计的。通常情况下,片段(甚至是整个页面)在被更改后(通过che“cache invalidation”机制)被渲染,然后只有已经渲染的对象从缓存中提供。

例如,这在新闻网站上运行得非常好,其中带有文章的页面仅针对第一个阅读器呈现,并且进一步呈现旁路页面生成并且从缓存向右提供已经呈现的页面,极大地增加了服务器可以承受的读取器数量(与每次请求生成页面相反)。

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

任何用户具体的东西只能存储在会话饼干(我甚至见过基于Cookie的会话)。

+0

谢谢!我怀疑这个阿哈哈 –