2014-12-21 96 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

謝謝!我懷疑這個阿哈哈 –