重い初期化の誤魔化し方

ウェブアプリ、とくに滞在時間が長いSNSやゲームだと、なんかいろいろあって裏側で大量のデータを初期化しないといけないケースがよくある。

そういうときに誤魔化し方を考えてたりする。

保存先

  • localStorage
  • IndexedDb
  • WebSQL(deprecated)
  • ネイティブ側のSQLite(ガワアプリ)

事前に初期化したいデータ

  • マスターデータの類
    • 月1で更新されるぐらいのやつ
  • 更新頻度化が低く、かつ頻繁にアクセスするデータ
    • たとえばショップのアイテム一覧とか
  • UI関連の画像
    • 汎用ボタンの画像とか、絶対に読み込むことがわかってる画像にprefetchかけておく

初期化したくないデータ

  • 更新頻度が高いソーシャル関連
    • タイムラインとか
    • 基本的に同期でとるけど、こういう場面の初期化でユーザーの操作はブロックしないでいいようにする
  • ユーザーに閲覧させたくないデータ
    • ゲームならモンスターのステータス一覧とか
      • これはケース次第

こっそり初期化していたい場所

これでだいぶ稼げる。チュートリアルはだいたい静的アセットでどうにかなるケースが多いと思う。 登録フローの裏、まだユーザーが認証されてないから、認証後に必要となるデータはとれなかったりするので、工夫がいる。

安定性重視なら専用のローディング画面で直列リクエストでいい。

基本的に更新頻度が低いデータのexpire設定で頭を悩ませる事になる。めっちゃバグる