何らかの理由で、以下は 10 秒後に有効期限が切れません
def rcache_value
@random_val_from_cache = Rails.cache.fetch("random_val_from_cache",:expires_in=>10.seconds) do
rand 10000
end
@random_val_from_cache
アプリのフッターに出力します。パラメータが間違っていますか? 私はRails 3を使用しています。
何らかの理由で、以下は 10 秒後に有効期限が切れません
def rcache_value
@random_val_from_cache = Rails.cache.fetch("random_val_from_cache",:expires_in=>10.seconds) do
rand 10000
end
@random_val_from_cache
アプリのフッターに出力します。パラメータが間違っていますか? 私はRails 3を使用しています。
さて、あなたの例の構文エラーがSOの単なるタイプミスであると仮定すると、問題はインスタンス変数を使用していることが原因である可能性があります. キャッシュの値はそのインスタンス変数に設定されます。これは、手動で行うか、クラスがリロードされない限り (サーバーが再起動されるまで発生しません)、リセットされません。次のようにする必要があります。
def rcache_value
Rails.cache.fetch("random_val_from_cache", :expires_in => 10.seconds) do
rand 10000
end
end
そしてそれを呼び出す:
<%= rcache_value %>
答えを見つけました。expires_in は非推奨でfetch
あり、書き込みに設定することが推奨されています。したがって、キャッシュに既に存在するかどうかを確認するチェックを書き、存在しない場合は書き込みを行う必要があります。