2012-08-30 54 views
1

我們正在研究一個Chrome擴展,其中我們有FB朋友導入功能。 現在每當擴展加載它顯示所有的FB朋友圖像,因此從FB加載這些圖像需要時間。我們希望最小化圖片加載時間。 有什麼辦法可以做到這一點?我們可以將圖像緩存到chrome緩存&在第二次加載時從緩存中讀取它們嗎?我們可以在Chrome中緩存Facebook朋友圖片嗎?

我也不認爲這是同樣的解決方案。 但是想檢查是否有任何方法來實現這一目標?

謝謝。

+1

讓chrome自己決定緩存的內容和方式,這是最佳策略。 – zerkms

+0

我也認爲這種方式..但它需要很多時間來緩存.. –

回答

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 

這些是圖形API重定向URL - Facebook正在這裏禁止緩存,從而使瀏覽器有充分的時間來查找這些資源再次。在他們的CDN的最終圖像的URL,到這些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頁面中將這些圖片用作圖片網址 - 那麼瀏覽器無需每次都發出請求,查看圖片網址的緩存版本是否仍然有效,但可以立即從緩存中提供。

CDN網址不應在更長的時間跨度使用 - 他們可以變化;但是在更短的時間內使用它們可能是安全的,因爲如果沒有充分的理由它們不會改變。也就是說,用戶更改他們的個人資料圖片可能是一個原因 - 但是將它們緩存一個小時左右可能是一種妥協方式,可以讓用戶更好地使用您的應用程序。

但是這樣做,你的應用程序將不得不爲每個朋友的圖像最初的API請求,以得到的CDN檔案相片URL的缺點 - 這是耗時爲好,如果你這樣做爲大量的朋友。 (儘管批量請求或FQL多查詢可能會將其縮短到一個 HTTP請求,而不是多個請求)。

+0

這將是我們可以使用CDN的web應用程序的情況,但我們正在研究chrome擴展,所以我們如何使用CDN作爲擴展? –

相關問題