-4

私はFacebook APIを使用してFacebookアプリケーションを開発しました。Facebook APIをページの上に含めました。すべてのページでAPIを使用しているため、すべてのページでロードされています。これが問題だったかどうかはわかりませんロードに時間がかかるアプリケーション、

この問題を解決する方法を教えてください。前もって感謝します

4

1 に答える 1

4

あなたのタグには Javascript と書かれているので、Graph API で Javascript SDK を使用していると思います。http://developers.facebook.com/docs/reference/javascript/を参照してください。 これは、チャネル URL html ファイルを正しく指定しないと JS SDK の実行が非常に遅くなる方法について説明しているためです。

重要な部分は次のとおりです。

チャネル ファイル

チャネル ファイルは、特定のブラウザーでのクロス ドメイン通信に関するいくつかの問題に対処します。channel.html ファイルの内容は、次の 1 行だけにすることができます。

  <script src="//connect.facebook.net/en_US/all.js"></script>

チャネル ファイルをできるだけ長くキャッシュしておくことが重要です。このファイルを提供するときは、有効期限が長い有効な Expires ヘッダーを送信する必要があります。これにより、チャネル ファイルがブラウザによってキャッシュされます。これは、スムーズなユーザー エクスペリエンスにとって重要です。適切なキャッシュがないと、クロスドメイン通信が非常に遅くなり、ユーザーのエクスペリエンスが大幅に低下します。PHP でこれを行う簡単な方法は次のとおりです。

 <?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
 ?>
 <script src="//connect.facebook.net/en_US/all.js"></script>

channelUrl パラメータはオプションですが、推奨されます。チャネル ファイルを提供すると、3 つの特定の既知の問題に対処するのに役立ちます。まず、フレーム間で通信するためのコードを含むページでは、ソーシャル プラグインが channelUrl なしで空白として表示される場合があります。第 2 に、channelUrl が指定されておらず、ページに自動再生オーディオまたはビデオが含まれている場合、クロスドメイン通信のためにページがバックグラウンドで 2 回目に読み込まれるため、ユーザーには 2 つのオーディオ ストリームが聞こえる可能性があります。第 3 に、チャネル ファイルは、サーバー側のログに余分なヒットが含まれるのを防ぎます。channelUrl を指定しない場合は、fb_xd_bust または fb_xd_fragment パラメーターを含むページ ビューをログから削除して、適切なカウントを確保できます。

channelUrl は、SDK を含めるページと一致する完全修飾 URL である必要があります。つまり、サイトが www を使用して提供されている場合は、チャネル ファイルのドメインに www を含める必要があり、ページで document.domain を変更する場合は、channel.html ファイルでも同じ document.domain の変更を行う必要があります。プロトコルも一致する必要があります。ページが https 経由で提供される場合、channelUrl も https である必要があります。スクリプト src にも一致するプロトコルを使用することを忘れないでください。上記のサンプル コードでは、ほとんどの https ケースを適切に処理するプロトコル相対 URL を使用しています。

于 2012-06-07T19:30:43.693 に答える