
Ich muss viele Bilder von Amazon S3 auf eine einzelne Seite laden und manchmal dauert es ziemlich lange, bis alle Bilder geladen sind. Ich habe gehört, dass das Aufteilen der Bilder, die von verschiedenen Subdomains geladen werden, parallele Downloads erleichtern würde. Wie sieht die tatsächliche Implementierung aus? Während das Aufteilen für Subdomains wie static, image usw. einfach ist, sollte ich etwa 10 Subdomains (image1, image2...) erstellen, um beispielsweise 100 Bilder zu laden? Oder gibt es clevere Möglichkeiten, dies zu tun?
(Übrigens überlege ich, Memcache zum Zwischenspeichern der S3-Images zu verwenden; ich bin nicht sicher, ob das möglich ist. Für weitere Kommentare wäre ich dankbar. Vielen Dank!
Antwort1
Ich werde versuchen, meine Antwort in Punkte zu gliedern, die Ihnen bei Ihrem Status sicher weiterhelfen können:
- Da wir über statische Inhalte sprechen, schlage ich vor, Nginx als Reverse-Proxy zum Servern Ihrer statischen Inhalte zu verwenden. Ein langsamer Download kann daran liegen, dass Sie das Apache-Limit für gleichzeitige Verbindungen erreichen.
- Die Verwendung unterschiedlicher oder mehrerer Subdomains kann sich zwar positiv auf die Reichweite der Browser selbst auswirken, kann sich aber andererseits auf die allgemeine Geschwindigkeit und das Ranking Ihrer Seite auswirken, da Ihre Subdomains mehr DNS-Auflösungsanforderungen hinzufügen, was nicht gut ist.
- Schauen Sie sich beispielsweise Cloudflare.com an. Dort können Sie von einigen sehr guten kostenlosen Diensten profitieren.
- Nutzen Sie den Browser-Caching-Header. Dies kann eine große Hilfe sein, wenn sich Ihr Inhalt nicht sehr dynamisch ändert.
- Versuchen Sie, Ihre statischen Skripte (z. B. CSS, JS) immer so weit wie möglich zu minimieren.
- Versuchen Sie es mit einem Dienst wie diesem:http://tools.pingdom.com/fpt/Undhttp://gtmetrix.com/da sie Ihnen neben wertvollen Hinweisen für bessere Ergebnisse auch sehr wertvolle Details zur Ladeleistung Ihrer Seiten liefern können.
- Versuchen Sie, die von Ihren Seiten generierten Anfragen zu minimieren (z. B. indem Sie Bilder mit unterschiedlichem Stil oder Layout in weniger Bildern kombinieren und diese über CSS steuern).
Hmm... das ist es, was ich im Moment im Sinn hatte.
Antwort2
Die größte Beschleunigung erzielen Sie durch die Umstellung auf CloudFront, das CDN von Amazon, das vor S3 sitzen und die Dinge für Benutzer erheblich beschleunigen kann.
Wenn Sie dies getan haben, können Sie, wenn Sie möchten, mehrere CloudFront-Subdomänen erstellen, die alle auf denselben S3-Bucket verweisen, den Sie dann nach dem Zufallsprinzip Bildern zuweisen können, sodass diese parallel geladen werden (im Wesentlichen Ihre Idee mit Bild1 und Bild2).
Antwort3
Ihre Idee, die Bilder auf mehrere CNAMES aufzuteilen, ist gut und wird am besten durch die Best Practices von Google beschrieben:https://developers.google.com/speed/docs/best-practices/rtt#ParallelizeDownloads