UPDATE: Es scheint, dass das Hauptproblem bei Bildern, die nicht geladen werden, auf die Art und Weise zurückzuführen ist, wie das HTTPS Everywhere-Plugin / die Erweiterung des EFF einige Tumblr-URLs verarbeitet hat. Die Entwickler wurden benachrichtigt und ein Fix scheint vorhanden zu sein . Diese Antwort bricht im Wesentlichen die Detektivarbeit auf, die durchgeführt wurde, um das Problem aufzudecken, wie in der ursprünglichen Frage dargelegt, und könnte sich für das weitere Debuggen / Diagnostizieren als nützlich erweisen, wenn in Zukunft ein ähnliches Problem auftritt.
BEARBEITEN: Der größere Inhalt über Bild-Blutegel scheint ungültig zu sein. Fügen Sie also oben eine neue Idee hinzu und lassen Sie die Bild-Leeching-Informationen unten, nur für den Fall, dass sie für jemanden nützlich sind.
Amazon CloudFront CDN-Ideen
Okay, unter Verwendung der von Ihnen angegebenen URLs sowie einiger meiner Erfahrungen aus der Praxis mit Amazon CloudFront CDN-Setups habe ich etwas entdeckt. Es scheint, als ob die Amazon CloudFront CDN-Konfiguration von Tumblr aus irgendeinem Grund erstickt. Deshalb denke ich, dass dies der Fall ist.
Nehmen wir diese Beispiel-URL:
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Lassen Sie uns nun ausführen curl -I
, um Header-Informationen zu dieser Datei abzurufen:
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Die Ausgabe dafür wäre ungefähr so:
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 782141
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=1209600
Date: Thu, 05 Mar 2015 02:15:44 GMT
Server: nginx
X-Cache: Miss from cloudfront
Via: 1.1 7e54fc06cd70e4752fe050bbe5c130be.cloudfront.net (CloudFront)
X-Amz-Cf-Id: QyIUyzfaJJN3PU_xWkW0P-D2kjg_1cVenKzFAoY2PubgZQlBHWorZQ==
Hier sind die Header Date
(Datum und Uhrzeit der Datei auf dem CloudFront-Endpunkt) und X-Cache
(Status der Bereitstellung von Amazon-Inhalten) zu beachten. Ein typisches Verhalten bei Amazon CloudFront ist, dass beim ersten Zugriff ein "Miss from Cloudfront" angezeigt wird. Wenn Sie curl -I
danach sofort einen anderen ausführen, sollte ein Fehler auftreten Hit from cloudfront
.
Aber das habe ich gerade nicht gesehen. Hier ist eine Aufschlüsselung des Date
und X-Cache
Status eines Bündels von Zugriffen mir gemacht:
Date: Thu, 05 Mar 2015 02:19:37 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:39 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:44 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Der Grund, warum es mehrere Elemente mit denselben genauen Daten gibt, die sich Hit from cloudfront
dem Ende nähern, liegt darin, dass dies auf einem CDN geschieht: Wenn der Endpunkt des CDN über die Datei verfügt, Date
korreliert dies mit dem tatsächlichen Erstellungs- / Änderungsdatum der Datei, die Endpunkt hat.
Sie bemerken, dass die ersten vier Zugriffe Sekunden voneinander entfernt sind, mit unterschiedlichen Daten / Zeiten und alle Miss from cloudfront
, oder? Das bedeutet, dass der CDN-Endpunkt nur wiederholt, dass zu diesem Zeitpunkt versucht wurde, auf diese Datei zuzugreifen, und dass alle Versuche fehlgeschlagen sind.
Meine Einschätzung dazu ist, dass die Systeme von Tumblr nicht mit dem Amazon CloudFront CDN mithalten oder das Amazon CloudFront CDN nicht mit Tumblr mithalten kann. Aber in gewisser Weise sind die Dinge auf ihrer Serverseite nicht in Ordnung. Und da dies ein CDN ist, bemerkt jemand, der an einem Ort auf die Dateien zugreift, möglicherweise kein Problem, während jemand anderes an einem anderen Ort Probleme beim Anzeigen des Bildes hat.
Was alles zu sagen ist, ich denke nicht, dass dies auf der Client-Seite leicht geklärt werden kann.
BEARBEITEN: Das ursprüngliche Poster hat also einige neue URLs hinzugefügt, und dies weist immer noch auf ein serverseitiges Problem hin, aber ich wollte nur die Details für den Datensatz veröffentlichen.
EdgeCast & Highwinds CDN-Ideen
Das Originalposter hat also weitere Details hinzugefügt. Hier sind weitere Details basierend auf dem Blog-Beitrag, der als Beispiel verwendet wird:
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
Diese Bild-URLs werden als Beispiele für URLs in diesem Beitrag bereitgestellt:
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Und diese beiden Bild-URLs schlagen tatsächlich fehl. Aber von meiner Seite aus - wenn ich mir den ursprünglichen Soure-Code des Blogposts aus Brooklyn, New York, USA ansehe - sehe ich diese EdgeCast ( gs1.wac.edgecastcdn.net
) - URLs nicht. Dies sind vielmehr die URLs, die ich sehe:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Mein erster Gedanke ist also, warum das Originalposter diese EdgeCast ( gs1.wac.edgecastcdn.net
) sieht . Aber wenn ich dann eine Traceroute zum mache, 41.media.tumblr.com
sehe ich, dass dies ein Server ist, der von Highwinds verwaltet wird (!?!?). Im Gegensatz dazu verwenden die vom ursprünglichen Benutzer weitergegebenen ursprünglichen URLs den 36.media.tumblr.com
Hostnamen, und Sie können sehen, dass sie von Amazon CloudFront CDN-Servern verwaltet werden.
Was alles zu sagen ist - was ich bereits gesagt habe - all dies scheint ein serverseitiges Problem mit Tumblr und dessen CDN-Verwaltung zu sein. Aber von meiner Seite - in Brooklyn, New York, USA - sehe ich deutlich, dass Inhalte wie erwartet von Highwinds CDN-Servern sowie von Amazon CloudFront CDN-Servern geliefert werden. Woher diese EdgeCast-URLs kommen oder wie / warum sie dann fehlschlagen, kann der Client nicht kontrollieren. Dies ist definitiv eine Kontaktaufnahme mit den technischen Mitarbeitern von Tumblr, da ein Desktop-Endbenutzer dies auf keinen Fall beheben kann.
Image Leeching Ideen
Könnte nicht mehr relevant sein, aber hier als Referenz.
Wenn Sie dies angeben, geben Sie mir einen Hinweis:
Die Verwendung wget
der direkten Links der Bilder funktioniert.
Auf vielen Websites gibt es Regeln, die normalerweise über Apache festgelegt werden und die das Löschen von Bildern verhindern. Weitere Einzelheiten zur Funktionsweise dieser Regeln finden Sie hier und werden wie folgt zusammengefasst:
Mit .htaccess können Sie Hotlinks auf Ihrem Server nicht zulassen, sodass diejenigen, die beispielsweise versuchen, eine Verknüpfung zu einem Bild oder einer CSS-Datei auf Ihrer Site herzustellen, entweder blockiert werden (fehlgeschlagene Anforderung, z. B. ein fehlerhaftes Bild) oder einen anderen Inhalt bereitstellen ( dh: ein Bild eines wütenden Mannes).
Aufgrund Ihrer Beschreibung - und der Tatsache, dass Sie über auf die Bilder zugreifen können - wget
kann ich davon ausgehen, dass die Bilder, mit denen Sie Probleme haben, nicht von Benutzern auf Tumblr gehostet werden, sondern von Bildern, die in einem Tumblr-Blog platziert, aber tatsächlich auf einem anderen gehostet werden Seite? ˅.
Wenn Standardverfahren zum Löschen von Bildern eingeführt werden, führt das Anzeigen eines eingebetteten Bildes auf einer Site, die auf einer anderen Site gehostet wird - was das Leeching blockiert - zu einer fehlerhaften Bildverknüpfung oder möglicherweise zu einem „Stop Leeching!“. Bild wird zurückgegeben. Dies liegt daran, dass grundlegende Anti-Blutegel-Regeln - wie die auf dieser Beispielseite - Bildverweise überprüfen, um sicherzustellen, dass die Seite, auf der das Bild angefordert wird, mit der Domäne übereinstimmt, in der sich das Bild befindet.
Wenn Sie also über auf das Bild zugreifen wget
, greifen Sie direkt auf das Bild zu. Die Regeln für das Ausbluten von Bildern würden also nicht in Kraft treten. Sie können das Bild also über, wget
aber nicht erhalten, wenn es in eine andere Seite eingebettet ist.