3

Rails.cache.fetch の :race_condition_ttl オプションは、私が望むものに本当に近いようです: http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html#method-i-fetch

ただし、期限切れの値に遭遇した最初のリクエストはまだブロックされているようです (それ以降は、古い値を取得し、キャッシュの更新中にすぐに返される後続のリクエストのみです)。

最初の期限切れのリクエストを同じように処理しないことに驚いたと思います。これに共通のパターンがあるのか​​ 、それともカスタムにする必要があるのか​​ 疑問に思っていました.

4

2 に答える 2

0

これを解決するために別の方法を使用しました。expires_in を設定せず、admin から要求された場合にのみキャッシュ ミスを強制します。

管理者と本番環境の 2 つの環境で Rails アプリを使用しています。本番環境ではキャッシュが期限切れになることはありません。管理者は常にページのキャッシュ ミスを強制します。

すべてのキャッシュを構築したら。期限切れになることはありません。あなたが管理者からそれを行うことができることを除いて。:race_condition_ttl を使用すると、管理者はこれらの Web ページの最初の訪問が保証されるため、この方法は非常にうまく機能します。

于 2014-03-14T12:51:23.050 に答える
0

私は今のところこのようなものにモンキーパッチを当てました: https://gist.github.com/4062316

安全性はまだわかりませんが、機能しているようです。ただし、標準の Rails.cache でこのようなものが見られるのは素晴らしいことです。

于 2012-11-12T22:14:38.550 に答える