
我在一個頁面上從 Amazon S3 加載了很多圖像,有時需要相當長的時間才能加載所有圖像。我聽說分割映像從不同的子網域載入將有助於並行下載,但是實際的實作是什麼?雖然很容易分割靜態、影像等子域;我應該建立 10 個子網域(image1、image2...)來載入 100 張圖片嗎?或是有什麼巧妙的方法可以做到嗎?
(順便說一句,我正在考慮使用 memcache 來緩存 S3images;我不確定是否可能。如果有任何進一步的評論,我將不勝感激。非常感謝!
答案1
我將嘗試對我的答案進行排序,這肯定會對您的狀態有所幫助:
- 當我們談論靜態內容時,我建議使用 Nginx 作為反向代理來伺服器靜態內容。下載緩慢可能是因為您達到了 Apache 的並發連線限制。
- 使用不同的或多子網域可能有助於擴大瀏覽器本身的範圍,但另一方面可能會影響您的頁面的整體速度和排名,因為您的子網域將添加更多的DNS 解析請求,這不是一個好的選擇事物。
- 看看類似的網站:Cloudflare.com,他們有一些免費的非常好的服務可供受益。
- 利用瀏覽器快取標頭,如果您的內容沒有動態變化,這可能會很有幫助。
- 盡量保持靜態腳本(例如 CSS、JS)始終保持最佳狀態。
- 嘗試使用一些服務,例如:http://tools.pingdom.com/fpt/和http://gtmetrix.com/因為它們可以為您提供有關頁面加載性能的非常有價值的詳細信息,以及獲得更好結果的寶貴提示。
- 盡量減少頁面產生的請求(例如將不同樣式或佈局的圖片組合到更少的圖片中並透過 CSS 進行控制)
嗯..這是我在自動櫃員機上的想法。
答案2
您將獲得的最大加速是遷移到 CloudFront(Amazon 的 CDN),它可以位於 S3 之前,使用戶的速度大大加快。
完成此操作後,如果需要,您可以建立多個CloudFront 子網域,它們都指向同一個S3 儲存桶,然後您可以將這些子網域隨機指派給影像,以便它們並行載入(本質上是您的image1、 image2 想法)。
答案3
您認為將圖像拆分為多個 CNAME 是一個很好的想法,Google 的最佳實踐對此進行了最好的描述:https://developers.google.com/speed/docs/best-practices/rtt#ParallelizeDownloads