我有列出所有事件的頁面。但事件的列表取決於用戶是否是管理員。 如果我在瀏覽模型對象的頁面上使用片段緩存,它將緩存admin的所有事件。在每個用戶的Rails中使用片段緩存
它可以從緩存服務到另一個不是管理員的用戶嗎?如果是的話,我如何爲非管理員和管理員用戶使用片段緩存。
我有列出所有事件的頁面。但事件的列表取決於用戶是否是管理員。 如果我在瀏覽模型對象的頁面上使用片段緩存,它將緩存admin的所有事件。在每個用戶的Rails中使用片段緩存
它可以從緩存服務到另一個不是管理員的用戶嗎?如果是的話,我如何爲非管理員和管理員用戶使用片段緩存。
這樣做與該片緩存鍵如下:
<% cache [current_user.role, :events] do %>
<b>All the Events based on the Current User's Role</b>
<%= render events %>
<% end %>
http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html#method-i-cache
您可以通過在緩存方法的name
參數中的任何數量的項目,以滿足高速緩存的情況。
你可能想要做這樣的事情:
<%= cache_unless admin?, project do %>
<b>All the topics on this project</b>
<%= render project.topics %>
<% end %>
例如,從Rails的文檔解禁: http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html#method-i-cache_unless
在你的控制器:
class ApplicationController < ActionController::Base
fragment_cache_key do
current_user.role
end
#...
這將導軌的使用片段緩存,並在構建緩存鍵時將其添加到fragment_cache_keys
的列表中。因此,只要使用Rails的片段緩存,就可以爲每個用戶角色自動獲取唯一的緩存鍵(或者使用您喜歡的任何內容)。
使用expire_fragment(key,options = nil)根據條件過期緩存 – Bijendra
常規用戶都有相同的事件嗎?或者是根據個人用戶創建的列表?因爲如果它們完全不同,那麼使用緩存並不是最好的辦法,因爲它只會產生大量的緩存。 – Cremz