私は Rails.cache を使用しています (デフォルトストアと dalli gem で memcached の両方を試しましたが、同じ動作をしました) 動作しているようですが、そうではありません (ログはクエリが作成されていないことを示していますが、実際の結果は他の方法で表示)... 上位 10 件のクエリを 1 日間キャッシュする検索ページがあります。
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
しかし、検索ページに行って新しい検索語を繰り返し入力すると、トップ 10 の結果に表示され始めます。(ただし、トップ 10 の結果が 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 で同じ動作をするのは奇妙です。