- 現在、手動で Memchaced に接続しています。キーが存在するかどうかを確認し、コンテンツを保存して期限切れにします。しかし、お気づきかもしれませんが、これはすぐに退屈で繰り返しになります。
- ただし、Rails は、これをより簡単に実現するために使用できるいくつかのパターンを提供します。
最初Cache Storesにオプションを使用して、レールにMemchachedを使用するように指示できます
config.cache_store = :mem_cache_store, "example.com"
このキャッシュ ストアは memcached サーバーを使用して、アプリケーションに一元化されたキャッシュを提供します。Rails は、バンドルされている dalli gem をデフォルトで使用します。これは現在、実稼働 Web サイトで最も人気のあるキャッシュ ストアです。これを使用して、非常に高いパフォーマンスと冗長性を備えた単一の共有キャッシュ クラスターを提供できます。
キャッシュを初期化するときは、クラスター内のすべての memcached サーバーのアドレスを指定する必要があります。何も指定されていない場合、memcached がデフォルト ポートのローカル ホストで実行されていると想定されますが、これは大規模なサイトには理想的な設定ではありません。
このキャッシュの write メソッドと fetch メソッドは、memcached に固有の機能を利用する 2 つの追加オプションを受け入れます。:raw を指定して、値をシリアル化せずにサーバーに直接送信できます。値は文字列または数値でなければなりません。インクリメントやデクリメントなどの memcached 直接操作は、生の値に対してのみ使用できます。memcached に既存のエントリを上書きさせたくない場合は、:unless_exist を指定することもできます。
Dalli を直接使用する代わりに rails Cache store を使用すると、次の Nicer API を使用できます。
Rails.cache.read('key')
Rails.cache.write('key', value)
Rails.cache.fetch('key') { value }
さて、実際にキャッシュするためのレール。Declarative EtagsまたはFragment Cachingを使用して通知をキャッシュできます。これは、宣言型 Etags を使用した例です
def get_notification
if current_user
@new_notification = Notification.getNew(current_user.id)
end
refresh_when @new_notification
end
現在、宣言型E タグが機能する方法は、リクエストが一致する ETag を送信し、キャッシュ コピーが送信されたときに、テンプレートがレンダリングされないことです。ただし、 @new_notification変更すると E タグの値も変更されます。したがって、キャッシュの有効期限が切れます。現在、キャッシングはカバーすべき膨大なトピックであり、それを行うためのさまざまなテクニックがあります。したがって、おそらく完全な回答はできませんが、次のリソースを参照して、詳細を確認してください。
ハッピーキャッシング;-)