1

私たちは、FB フレンドのインポート機能を備えた 1 つの Chrome 拡張機能に取り組んでいます。拡張機能がロードされるたびに、すべての FB フレンドの画像が表示されるため、FB からこれらの画像をロードするには時間がかかります。画像の読み込み時間を最小限に抑えたいと考えています。これを達成する方法はありますか?画像を chrome キャッシュにキャッシュし、2 回目の読み込みでキャッシュから読み取ることはできますか?

また、これが同じ解決策だとは思いません。しかし、これを達成する方法はありますか?

ありがとう。

4

1 に答える 1

2

を指して画像をロードしていると思いますhttp(s)://graph.facebook.com/userid/pictureか?

さて、Facebook はこれらの URL を次のようにキャッシング ヘッダーとともに配信します。

Cache-Control: private, no-cache, no-store, must-revalidate 
Expires:       Sat, 01 Jan 2000 00:00:00 GMT    
Pragma:        no-cache

これらは Graph API リダイレクト URL 用です。Facebook はここでのキャッシュを禁止しているため、ブラウザはこれらのリソースを毎回検索する必要があります。これらの URL がヘッダーでリダイレクトする CDN の最終的な画像 URL Location-これらには、キャッシュに関する次のヘッダーがあります。

Last-Modified: Fri, 01 Jan 2010 00:00:00 GMT    
Cache-Control: max-age=1209600  
Expires:       Thu, 13 Sep 2012 08:07:52 GMT

そのため、事前にアプリで CDN URL を要求してから、これらをアプリの HTML ページで画像 URL として使用することができます。そうすれば、ブラウザーは画像 URL のキャッシュされたバージョンかどうかを確認するために毎回リクエストを行う必要がなくなります。は引き続き有効ですが、キャッシュからすぐに提供できます。

CDN URLは長期間にわたって使用しないでください。変更される可能性があります。しかし、正当な理由なしに意のままに変更されることはないため、より短い時間であれば、おそらく安全に使用できます。ユーザーがプロフィール写真を変更するのはそのような理由かもしれませんが、最長で 1 時間ほどキャッシュすることは、アプリ使用中のユーザー エクスペリエンスを向上させる妥協点になる可能性があります。

ただし、これを行うことの欠点は、CDN プロファイルの写真の URL を取得するために、アプリが最初に各友人の画像に対して API 要求を行う必要があることです。また、多数の友人に対してこれを行うと、時間もかかります。(ただし、バッチ リクエストまたは FQL マルチクエリは、複数ではなく1 つのHTTP リクエストに短縮できる場合があります。)

于 2012-08-30T08:15:43.480 に答える