動的コンテンツをCacheする
読む前に思っていること
動的なものを返すAPIと、静的なものを返すAPIを分ければいい
例えば、Aさんが1つのツイートをgetする、という時
ツイートの内容自体は静的
この辺は動的
Aさんがいいねしているか否か
いいね数
この時、1つのツイートを取得する時に3つのrequestを飛ばす
ツイートの内容を取得
Aさんがいいねしているか否か
いいね数
1番目のやつだけcacheすればいい
しかも、コレの良いところは、cacheの話だけでなく、Entityの設計の視点でも実装がシンプルになるmrsekut.icon code:ts
type Tweet = {
author: Author;
fullText: string;
isLike: boolean
}
code:ts
type Tweet = {
author: Author;
fullText: string;
}
デメリット?
リクエスト数
『Web配信の技術』.iconでの、静的コンテンツの定義
TTLを長く設定できるもの
頻繁には更新されない
1時間以上のTTLにしても問題にならないようなもの
明確にTTLが決められるもの
明確にTTLが決められない
e.g. 天気予報、株価情報
ユーザーの状態で動作が変わる
e.g. login/guest
動的コンテンツの方が、
TTLを決定するのが難しいので適切にcacheさせるのが難しい
静的コンテンツに比べて計算量が多いので、cacheできると効果がでやすい
動的コンテンツは、それぞれで異なるライフサイクルを持つ
更新タイミングが個々に異なるので、統一的に扱うのが難しそうmrsekut.icon
userの種類によって、異なる動作をするものがある
cache不可能
requestの度に取得する必要があったりする
リアルタイム性が求められる
e.g. 決済画面
分割する
非同期に取得する
Reactならこれが自然mrsekut.icon
キャッシュできるものとできないものを混ぜない
異なるライフサイクルのものはなるべく混ぜない
コード生成したコンテンツのキャッシュ
頭に入らなかったので再読したいmrsekut.icon