AKTUALIZACJA: Wydaje się, że podstawowy problem z brakiem ładowania obrazów wynikał ze sposobu, w jaki wtyczka / rozszerzenie EFF HTTPS Everywhere obsługiwała niektóre adresy URL Tumblr. Deweloper został powiadomiony i wydaje się, że wprowadzono poprawkę . Ta odpowiedź zasadniczo dzieli pracę detektywa wykonaną w celu wykrycia problemu, jak wskazano w początkowym pytaniu, i może okazać się przydatna do dalszego debugowania / diagnozy, jeśli podobny problem pojawi się w przyszłości.
EDYCJA: Większa treść na temat pijawki obrazu wydaje się nieprawidłowa. Tak więc doda nowy pomysł na górze i pozostawi informacje o wysysaniu obrazu na dole, na wypadek, gdyby komuś się przydał.
Pomysły Amazon CloudFront CDN
Okej, używając podanych przez ciebie adresów URL - a także niektórych moich rzeczywistych doświadczeń z konfiguracjami Amazon CloudFront CDN - myślę, że coś odkryłem. Wygląda na to, że konfiguracja CDN Amazon CloudFront firmy Tumblr dusi się z jakiegoś powodu. Oto dlaczego tak myślę.
Weźmy ten przykładowy adres URL:
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Teraz uruchommy, curl -I
aby uzyskać informacje o nagłówku tego pliku:
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Wynik tego byłby mniej więcej taki:
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==
Teraz należy zwrócić uwagę na Date
(datę i godzinę pliku w punkcie końcowym CloudFront) oraz X-Cache
(nagłówki stanu dostarczania treści Amazon). Typowe zachowanie na Amazon CloudFront polega na tym, że pierwszy dostęp przekazuje komunikat „Miss from cloudfront”, a następnie, jeśli zrobisz kolejne curl -I
od razu, powinno być Hit from cloudfront
.
Ale nie to właśnie widziałem. Oto zestawienie Date
i X-Cache
status wielu dostępów, które wykonałem:
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
Powodem, dla którego istnieje wiele elementów z tymi samymi dokładnymi danymi, które są Hit from cloudfront
blisko końca, jest to, co dzieje się w CDN: Jeśli punkt końcowy CDN ma plik, to Date
koreluje z faktyczną datą utworzenia / modyfikacji pliku, który punkt końcowy ma.
Zauważysz, że pierwsze cztery dostęp są w odstępie kilku sekund, z różnymi datami / godzinami i wszystkie są Miss from cloudfront
, prawda? Oznacza to, że punkt końcowy CDN po prostu przypomina, że w tamtych czasach próbowano uzyskać dostęp do tego pliku i wszystkie próby zakończyły się niepowodzeniem.
Więc moja ocena tego fotela jest taka, że systemy Tumblr nie nadążają za Amazon CloudFront CDN lub Amazon CloudFront CDN nie nadąża za Tumblr. Ale w pewnym sensie po stronie serwera wszystko jest nie tak. A ponieważ jest to CDN, ktoś uzyskujący dostęp do plików w jednej lokalizacji może nie zauważyć problemu, podczas gdy ktoś w innej lokalizacji miałby problemy z wyświetlaniem obrazu.
To znaczy, nie sądzę, że można to łatwo wyjaśnić po stronie klienta.
EDYCJA: Więc oryginalny plakat dodał kilka nowych adresów URL, a to wciąż wskazuje na problem po stronie serwera, ale chciałem tylko opublikować szczegóły dotyczące rekordu.
EdgeCast & Highwinds CDN Ideas
Więc oryginalny plakat dodał więcej szczegółów, więc oto więcej szczegółów na podstawie postu na blogu, który jest użyty jako przykład:
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
Te adresy URL obrazów są podane jako przykłady adresów URL w tym poście:
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
I te dwa adresy URL obrazów faktycznie zawodzą. Ale z mojej strony - patrząc na oryginalny kod Soure posta na blogu z Brooklynu, Nowy Jork, USA - nie widzę tych gs1.wac.edgecastcdn.net
adresów URL EdgeCast ( ). Są to raczej adresy URL, które widzę:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Tak więc moją pierwszą myślą jest to, dlaczego oryginalny plakat widzi te EdgeCast ( gs1.wac.edgecastcdn.net
). Ale jeśli zrobię 41.media.tumblr.com
śledzenie trasy do , zobaczę, że jest to serwer zarządzany przez Highwinds (!?!?). Natomiast początkowe adresy URL przekazywane przez pierwotnego użytkownika używają 36.media.tumblr.com
nazwy hosta i widać, że są zarządzane przez serwery Amazon CloudFront CDN.
To wszystko, co muszę powiedzieć - co powiedziałem wcześniej - wydaje się, że jest to problem po stronie serwera w Tumblr i zarządzaniu CDN. Ale z mojej strony - na Brooklynie w Nowym Jorku, USA - wyraźnie widzę, że treści są dostarczane zgodnie z oczekiwaniami z serwerów CDN Highwinds oraz serwerów CDN Amazon CloudFront. Skąd pochodzą te adresy URL EdgeCast lub jak / dlaczego się nie udaje, nie ma żadnej kontroli po stronie klienta. To zdecydowanie byłoby coś do skontaktowania się z personelem technicznym Tumblr, ponieważ nie ma sposobu, aby użytkownik końcowy mógł rozwiązać ten problem.
Pomysły na pijawki
To może nie być już istotne, ale tutaj w celach informacyjnych.
Mówiąc to, daj mi wskazówkę:
wget
Działa korzystanie z bezpośrednich łączy obrazów.
W wielu witrynach obowiązują reguły - zwykle ustawiane za pomocą Apache - które zapobiegają wysysaniu obrazu. Więcej szczegółów na temat działania tych reguł można znaleźć tutaj i podsumowano w następujący sposób:
Korzystając z .htaccess, możesz zabronić łączenia na gorąco na swoim serwerze, więc osoby próbujące na przykład połączyć się z obrazem lub plikiem CSS w Twojej witrynie, albo zostaną zablokowane (nieudane żądanie, takie jak uszkodzony obraz), albo podadzą inną treść ( tj. obraz gniewnego mężczyzny).
Na podstawie twojego opisu - oraz faktu, że możesz uzyskać dostęp do obrazów za pośrednictwem - wget
prowadzi mnie do przekonania, że obrazy, z którymi masz problemy, nie są hostowane w Tumblr przez użytkowników, ale raczej obrazy, które są umieszczone na blogu Tumblr, ale faktycznie są hostowane na innym teren.
Po wdrożeniu standardowych procedur ługowania obrazu wyświetlenie obrazu osadzonego w jednej witrynie hostowanej w innej witrynie - która blokuje pijawkę - spowoduje uszkodzenie łącza do obrazu lub „Stop Leeching!” obraz jest zwracany. Wynika to z faktu, że podstawowe reguły anty-pijawkowe - takie jak na tej przykładowej stronie - sprawdzają odwołania do obrazków, aby upewnić się, że strona żądająca obrazu pasuje do domeny, na której znajduje się obraz.
Więc kiedy uzyskujesz dostęp do obrazu za pośrednictwem, wget
masz bezpośredni dostęp do obrazu. Tak więc reguły wysysania obrazu nie uruchomiłyby się. W ten sposób można uzyskać obraz, wget
ale nie wtedy, gdy jest on osadzony na innej stronie.