重い初期化の誤魔化し方
ウェブアプリ、とくに滞在時間が長いSNSやゲームだと、なんかいろいろあって裏側で大量のデータを初期化しないといけないケースがよくある。
そういうときに誤魔化し方を考えてたりする。
保存先
- localStorage
- IndexedDb
- WebSQL(deprecated)
- ネイティブ側のSQLite(ガワアプリ)
事前に初期化したいデータ
- マスターデータの類
- 月1で更新されるぐらいのやつ
- 更新頻度化が低く、かつ頻繁にアクセスするデータ
- たとえばショップのアイテム一覧とか
- UI関連の画像
- 汎用ボタンの画像とか、絶対に読み込むことがわかってる画像にprefetchかけておく
初期化したくないデータ
- 更新頻度が高いソーシャル関連
- タイムラインとか
- 基本的に同期でとるけど、こういう場面の初期化でユーザーの操作はブロックしないでいいようにする
- ユーザーに閲覧させたくないデータ
- ゲームならモンスターのステータス一覧とか
- これはケース次第
- ゲームならモンスターのステータス一覧とか
こっそり初期化していたい場所
- 登録フローの裏
- チュートリアルの裏
これでだいぶ稼げる。チュートリアルはだいたい静的アセットでどうにかなるケースが多いと思う。 登録フローの裏、まだユーザーが認証されてないから、認証後に必要となるデータはとれなかったりするので、工夫がいる。
安定性重視なら専用のローディング画面で直列リクエストでいい。
基本的に更新頻度が低いデータのexpire設定で頭を悩ませる事になる。めっちゃバグる。