mixiアプリ » 技術仕様(新方式) » モバイル » アプリケーションのパフォーマンス向上について
アプリケーションのパフォーマンス向上について
多くのアプリで友人一覧取得に際し、応答パフォーマンスが低下してしまうという現象が見受けられ、エラーが多発しまっているようです。友人一覧取得時のパフォーマンスを改善させる策を中心にエラー対策を行っていただくためのチェック一覧を作成しました。
アプリを提供する前に今一度ご確認くださいませ。
(1)友人一覧の取得をアプリ利用者のみに絞る
filterBy=hasAppオプションを付けることで、アプリを利用している
友人一覧を取得することができます。
例:/people/@me/@friends?format=json&filterBy=hasApp
(2)必要なフィールドのみ取得する
fieldsパラメータを指定することで、現住所、生年月日、性別などの情報が取得可能ですが、アプリ内で本当に必要なデータのみ取得するようにしてください。
(3)一度に取得する友人数をむやみに増やさない
countパラメータを指定することで、一度に取得する友人の数を設定できますが、多くのデータを取得しようとすればするほど
レスポンスに時間がかかります。この値を必要以上に増やさないようにしてください。指定しなかった場合のデフォルトは50件となっています。
(4)転送データの gzip 圧縮を行う
API を提供している api.mixi-platform.com では、転送データの gzip 圧縮がサポートされています。
HTTP リクエスト・ヘッダに “Accept-Encoding: gzip” があると、gzip
圧縮されたレスポンスを返します。gzip 圧縮することで転送量が下がり、パフォーマンスの向上が期待できます。
API アクセスするときの “Accept-Encoding: gzip” のサポートをご検討ください。
PHPでlibcurlを利用している場合は、以下のオプションを指定してください。
curl_setopt($curl, CURLOPT_ENCODING, ‘gzip’);
(5)ローカルキャッシュを積極的に利用する
友人情報など、APIから取得したデータは24時間のキャッシュが可能です。
アクセスが来るたびに毎回APIにアクセスするのではなく、ローカルキャッシュ(memcachedなど)を利用することで負荷を大幅に下げることが可能です。
(6)友人一覧を非同期で取得する
アクセスが来るたびに友人一覧を取得するのではなく、非同期で取得するようにするとより効果的です。
例えば、チュートリアルを表示している間、ゲームを遊んでいる間に友人一覧を取得しておく等の処理です。
また、注意事項として以下についてもご確認いただきますようお願いいたします。
(7) アクティビティの連投制限について
アクティビティには連投制限があります。1 ユーザにつき、ひとつのアプリに対して、1分間に 1 回までしかアクティビティを送信できません。これを超える場合はエラーになります。
現状、このエラーが大量に出ており、無用な負荷をかけているようです
致命的ではありませんが、ご確認をお願いいたします。
(8) API アクセス時の User-Agent について
API にアクセスする際に適切な “User-Agent” を指定するようにしてください。
問題が発生した場合の調査が行いやすくなりますので、ご協力お願いいたします。
例:Python-urllib/2.5 AppEngine-Google
(9)1×1ピクセルの透明画像について
弊社側で1×1ピクセルの透明画像をご用意しましたので、同様の画像をデザインのために使用している場合は、こちらを利用するようにお願いいたします。
【画像URL】http://mm.mixi.net/img/dot0.gif