0

何らかの理由で、以下は 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を使用しています。

4

2 に答える 2

0

さて、あなたの例の構文エラーがSOの単なるタイプミスであると仮定すると、問題はインスタンス変数を使用していることが原因である可能性があります. キャッシュの値はそのインスタンス変数に設定されます。これは、手動で行うか、クラスがリロードされない限り (サーバーが再起動されるまで発生しません)、リセットされません。次のようにする必要があります。

def rcache_value
  Rails.cache.fetch("random_val_from_cache", :expires_in => 10.seconds) do
    rand 10000
  end
end

そしてそれを呼び出す:

<%= rcache_value %>
于 2012-12-30T05:57:39.170 に答える
0

答えを見つけました。expires_in は非推奨でfetchあり、書き込みに設定することが推奨されています。したがって、キャッシュに既に存在するかどうかを確認するチェックを書き、存在しない場合は書き込みを行う必要があります。

于 2012-12-31T00:14:48.023 に答える