2013-04-29 55 views
5

我正在使用我的Rails項目中的高速緩存並希望過期特定url的高速緩存。我得到了下面的命令到期片段對應的URL傳遞:Rails從模型中過期片段高速緩存

ActionController::Base.new.expire_fragment("localhost:3000/users/55-testing-devise/boards/") 

我很困惑在哪裏,我的Rails項目,以便使它運行起來,儘快把這個代碼作爲文本字段中的URL添加和點擊過期按鈕。

回答

3

ActionController::Caching::Sweeper是做這件事的好方法,它是Rails觀察者的一部分。

http://api.rubyonrails.org/classes/ActionController/Caching/Sweeping.html

class MyModelSweeper < ActionController::Caching::Sweeper 
    observe MyModel 

    def after_save(object) 
    expire_fragment('...') 
    end 
end 
+0

我不想在模型中的觀察員。我已經在我的項目中實施了清掃工。但是,如果您希望在不清除完整cahe的情況下將URL過期,則可以這樣做。幫手是正確的地方嗎? – 2013-04-29 08:36:40

7

你或許應該考慮不同的方法。模型不應該關心緩存如何工作,傳統上整個清理方法往往會變得複雜,笨拙,並且與其他代碼不同步。

基本上,你不應該手動過期片段。相反,一旦模型更新後,您更改緩存鍵/ URL(以便爲新版本創建新的緩存條目)。

現在的常識是使用Russian Doll Caching的方法。鏈接轉到一篇文章,解釋基礎知識,以及即將推出的Rails 4 will contain even better support

這可能是大多數標準Rails應用程序的最佳方式。