如何過期模型中的主頁片段?Rails 4 Fragment Cache整個頁面。如何在模型中過期緩存
在我的HTML
<% cache 'main-page' do %>
# html here
<% end %>
在我的崗位型號
after_create :clear_cache
after_update :clear_cache
def clear_cache
ActionController::Base.new.expire_fragment('main-page')
end
這不清除緩存。如果我創建或更新帖子,緩存不會清除。如果我在rails控制檯中運行ActionController::Base.new.expire_fragment('main-page')
,它將返回'nil'。如果我在後期模型中運行Rails.cache.clear
而不是ActionController::Base.new.expire_fragment('main-page')
,則可以運行。
好,據我所知,你的第二個選項是「正確的方式」。我明白了,但第一種選擇要簡單得多。 –
第二個選項乾淨地將視圖緩存從模型中分離出來,但它也會觸擊數據庫來生成該密鑰,所以存在權衡。它與俄羅斯娃娃緩存的Rails 4緩存風格更加一致,但是,嘿,這是你的應用。如果您要做選項1,您可以考慮使用觀察者或清掃器https://github.com/rails/rails-observers將該代碼保留在模型之外。 –
編輯我的答案,包括一些 - –