LoginSignup
0
1

More than 3 years have passed since last update.

mastodon APIがサーバ側でキャッシュする単位

Posted at

マストドンはRDBのリードが多いのでキャッシュするようになっているようだ。CacheConcernで実装している。
キャッシュ戦略は以下の通り。

  • (1) なんらかのコレクションをすべてキャッシュする
  • (2) 同じキーに対するリクエストのjsonレスポンスをまるごと3分間キャッシュする

(1) コレクションをすべてキャッシュする

cache_collectionによってトゥートゥはすべてフラグメントキャッシュに入れている。

この実装によってコレクションを構成する要素毎のキャッシュキーに必要なクエリは問い合わせているが、N+1クエリ対策の先読みクエリ分を節約できている。
Rails.cache.read_multiを使っているのでオーバーヘッドはい小さそう。

(2) 同じキーにでレスポンスをまるごと3分間キャッシュする

render_with_cacheでレスポンスを書いてあげると3分間フラグメントキャッシュに入れてくれる。
タイトルの通りなので特に情報はないんですけど、トゥートゥが更新されないからできる実装だと思う。

まとめ

コレクションの中身を1つずつフラグメントキャッシュに書き込んで、読み込み時には先読みコストを減らし、レスポンスを3分間キャッシュしている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1