2
我使用Rails.cache(我曾經嘗試都默認存儲,並與達利寶石memcached的 - 但我得到相同的行爲),它似乎是工作,而不是(日誌顯示,查詢不言,但實際結果表明否則)......我有1天緩存十大查詢搜索頁面:Rails.cache - 工作,但沒有工作
search.rb
def self.top_ten
Rails.cache.fetch("top_ten_searches_cache", :expires_in => 1.day) do
Search.order("count DESC").limit(10)
end
end
然而,當我進入搜索頁面並重復輸入新的搜索詞時,它將開始顯示前十名的結果! (而我並不期望前十名結果要改變,直到1天過去。)當緩存存儲爲默認值時,日誌中不顯示任何查詢(因此您認爲緩存正在運行),並且在使用dalli/memcached時,我會得到完全相同的結果行爲,但與此日誌中:
Cache read: top_ten_searches_cache ({:expires_in=>1 day})
Cache fetch_hit: top_ten_searches_cache ({:expires_in=>1 day})
Cache fetch_hit
是什麼意思?這是否意味着沒有找到緩存並且必須執行查詢?
不確定發生了什麼 - 奇怪的是,我使用Dalli獲得了默認存儲或memcached的相同行爲。
嗨邁克 - 謝謝,我怎麼能忘記這一點!我按照你的例子改變了查詢,但是,我仍然得到相同的行爲 - 如果我搜索一個約5次的新術語,它會顯示在前十名單中,而且我不希望更改爲24小時(因爲它應該返回緩存值)。我做錯了什麼嗎? – A4J
啊我想我知道發生了什麼...我需要刷新緩存,因爲它保留了舊的值... – A4J
是的,Rails.cache.clear做了訣竅 - 謝謝! – A4J