最近、ページにたくさんの画像があると、Facebook API の初期化に非常に長い時間がかかるという問題に遭遇しました。約 50MB の画像がある場合、これはより目立ちます。Facebook init は実際にはすべての前に最初に呼び出されますが、すべての画像が最初に読み込まれるまで待機しているようです。実際には、画像の 95% が非同期でページに追加されます。
誰かが同様の問題に遭遇しましたか? 現時点では、これがバグなのかブラウザの動作なのかはわかりませんが、Chrome と Safari でかなり一貫しています。また、初期化をブロックする可能性のある同期コードがどこにもないことを確認しました。
最初に Cookie をチェックして (または Cookie がない場合は Facebook を呼び出して)、ユーザーが既にログインしているかどうかを判断するために Facebook に依存しているため、これはユーザーのエクスペリエンスにかなりの影響を与えています。また、主要な方法として Facebook ログインを使用しているため、ユーザーは API が初期化されるまでログインできません。
これは、低速のインターネット接続で非常に簡単に再現できます。実際の動作を確認したい場合は、https://www.toovia.comにアクセスしてください。右上のログインをクリックすると、Face Pile が表示されないことがわかります。つまり、API がまだ初期化されています。
APIを初期化する方法は次のとおりです。Facebookのドキュメントからほとんどコピーされています。
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);