Gadget Party裏話「ブログパーツのJSONPを静的ファイル化して負荷に耐える」
裏話ってほどでもないのですが、先日リリースした Gadget Party (ガジェットパーティー) で工夫したところなどをブログに書いてみようと思います。
Gadget Partyではブログパーツを用意しています。このブログパーツにはユーザーが持っているガジェットと、ユーザと似ているガジェッターを表示することができます。
当然これらの情報は、ユーザーがガジェットを登録すると変更されます。それ以外にも、ガジェットの写真が変更されたり、表示順を並べ替えたりすることでも変更されます。そのため、ブログパーツの表示もそれにあわせて変えなければなりません。
それを簡単に実現するには、ブログパーツのJavaScriptに返すJSONデータを動的に生成させればよいわけですが、ブログパーツが表示されるたびにプログラムを叩いてしまうとサーバの負荷が高くなってしまいます。特にページビューの多いブログに貼られてしまうと大変なことになってしまいます。
そこでGadget PartyではJSONPのデータを静的ファイルとしてあらかじめ書き出しておくことにしました。JSONPを書き出しているタイミングは、
- ユーザー登録が完了したとき
- ガジェットをマイガジェットに追加したとき
- ガジェットをマイガジェットから外したとき
- ガジェットを並び替えたとき
- ガジェットの写真を変更したとき
- 似ているガジェッターの計算処理が走ったとき
などなどです。これらの処理の最後にJSONPの書き出し処理を入れることで、なるべくブログパーツで表示するデータが最新の状態になるようにしています。
元々リリース直前までJSONPを動的生成させていたため、ブログパーツの表示が他のコンテンツの表示に影響を与えないように、ブログパーツのコンテナを先に生成させておいて、onloadでJSONPをリクエストするという方式をとっていました。
が、静的ファイル化しているならonloadでリクエストする必要もないので、ブログパーツのJavaScriptの実行時にJSONPをリクエストするように直しました(ここは今朝実装)。これでブログパーツの表示も高速化しているはずです。
というわけで、ブログパーツで使うJSONPを静的ファイル化しておくと色々と嬉しいことがありますよ、というお話でした。
コメントを残す