2011-08-12 13 views
7

ロードバランサの背後で実行されている複数のアプリケーションサーバーでレールページキャッシュを期限切れにするにはどうすればよいですか? 私はキャッシュスイーパーを実装しようとしましたが、要求を受け取ったアプリケーションサーバー上のキャッシュを掃引するだけでした。キャッシュされたページはパブリックディレクトリに格納されます。複数のアプリケーションサーバーでレールページキャッシュの有効期限が切れる

答えて

0

キャッシュをスイープするようにすべてのサーバーに通知することができます(たとえば、特別なURLまたはデータベースを使用して、定期的にdbをチェックしてキャッシュを無効にするジョブが必要な場合)か、キャッシュを無効にするかcronjob経由で定期的に(wheneverを使用することをお勧めします)。

編集:もう1つの解決策は、NFSなどの方法ですべてのマシンで公開ディレクトリを共有することです。これにより、すべてのサーバーがすべてのマシンのキャッシュを無効にできます。

0

アプリサーバーが共通のファイルストアにアクセスできると仮定すると、レールがキャッシュを格納する場所を変更することができます。こうすることで、キャッシュを期限切れにすると、すべてのアプリサーバーに反映されます。お使いの設定では、単純に追加します。おそらく最も簡単な方法です

config.cache_store = :file_store, "/path/to/cache/directory"

を。 memcachedサーバーなどの他の方法もあります。

詳細情報はこちらhttp://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-filestore

関連する問題