1
我有以下問題:如何在不知道確切鍵的情況下刪除Rails中的一組緩存項目?
我有一個產品指標控制器和索引控制器可以查詢字符串,即一個無盡的組合。現在
/products?category=5&color=6
,它很容易使用PARAMS作爲關鍵,所有這些存儲:
caches_action :index, :cache_path => Proc.new { |c| c.params }
問題是當你需要清除所有的索引緩存當一個產品被添加在,刪除或更改。據我所知,你需要知道過期緩存對象的關鍵。你不能這樣做在清掃如下:
def after_update(product)
expire_action(product, :all)
end
我看着到緩存中標註了一點,但不能讓我看着寶石做我所需要的,或者實際上讓他們工作在所有。他們看到的寶石是Cashier和Rails-Cache-Tags。我想這樣做與出納如下:
caches_action :index, :cache_path => Proc.new { |c| c.params }, :tag => "products"
,並在清掃文件使用:
Cashier.expire "products"
但收銀員嘗試任何事情時,它提供了以下錯誤:
uninitialized class variable @@adapter in Cashier
使用Rails -cache-tags我試着做以下事情:
caches_action :index, :cache_path => Proc.new { |c| c.params }, :tags => %w(products)
,然後用下面的清掃文件:
cache.delete_tag "products"
但沒有工作 - 它沒有清除緩存。做我正在做的事情的正確方法是什麼?
謝謝,但是這不會有Memcache的工作。 「注意:Regexp過期只支持可遍歷所有鍵的緩存(與memcached不同)。」我想這個解決方法是使用Redis,但我理想的是尋找一種與任何形式的緩存兼容的解決方案。 –