F.Ko-Jiの「一秒後は未来」

Gadget Party裏話「ブログパーツのJSONPを静的ファイル化して負荷に耐える」

裏話ってほどでもないのですが、先日リリースした Gadget Party (ガジェットパーティー) で工夫したところなどをブログに書いてみようと思います。

Gadget Partyではブログパーツを用意しています。このブログパーツにはユーザーが持っているガジェットと、ユーザと似ているガジェッターを表示することができます。

gadgetparty-blogparts-big.gif

当然これらの情報は、ユーザーがガジェットを登録すると変更されます。それ以外にも、ガジェットの写真が変更されたり、表示順を並べ替えたりすることでも変更されます。そのため、ブログパーツの表示もそれにあわせて変えなければなりません。

それを簡単に実現するには、ブログパーツのJavaScriptに返すJSONデータを動的に生成させればよいわけですが、ブログパーツが表示されるたびにプログラムを叩いてしまうとサーバの負荷が高くなってしまいます。特にページビューの多いブログに貼られてしまうと大変なことになってしまいます。

そこでGadget PartyではJSONPのデータを静的ファイルとしてあらかじめ書き出しておくことにしました。JSONPを書き出しているタイミングは、

  • ユーザー登録が完了したとき
  • ガジェットをマイガジェットに追加したとき
  • ガジェットをマイガジェットから外したとき
  • ガジェットを並び替えたとき
  • ガジェットの写真を変更したとき
  • 似ているガジェッターの計算処理が走ったとき

などなどです。これらの処理の最後にJSONPの書き出し処理を入れることで、なるべくブログパーツで表示するデータが最新の状態になるようにしています。

元々リリース直前までJSONPを動的生成させていたため、ブログパーツの表示が他のコンテンツの表示に影響を与えないように、ブログパーツのコンテナを先に生成させておいて、onloadでJSONPをリクエストするという方式をとっていました。

が、静的ファイル化しているならonloadでリクエストする必要もないので、ブログパーツのJavaScriptの実行時にJSONPをリクエストするように直しました(ここは今朝実装)。これでブログパーツの表示も高速化しているはずです。

というわけで、ブログパーツで使うJSONPを静的ファイル化しておくと色々と嬉しいことがありますよ、というお話でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など