PEMBARUAN: Tampaknya masalah inti dengan gambar yang tidak dimuat berasal dari cara HTTPS Everywhere plugin / ekstensi menangani beberapa URL Tumblr. Pengembang telah diberi tahu dan tampaknya ada perbaikan . Jawaban ini pada dasarnya memecah pekerjaan detektif yang dilakukan untuk mengungkap masalah sebagaimana dijabarkan oleh pertanyaan awal dan dapat terbukti bermanfaat untuk debugging / diagnosis lebih lanjut jika masalah serupa muncul di masa depan.
EDIT: Konten yang lebih besar tentang lintah gambar tampaknya tidak valid. Jadi akan menambahkan ide baru di bagian atas dan meninggalkan info lintah gambar di bagian bawah kalau-kalau itu berguna untuk seseorang.
Amazon CloudFront CDN Ideas
Oke, dengan menggunakan URL yang Anda berikan — juga beberapa pengalaman dunia nyata saya dengan pengaturan CDN Amazon CloudFront — saya pikir saya menemukan sesuatu. Sepertinya konfigurasi Tumblr Amazon CloudFront CDN tersedak karena beberapa alasan. Inilah sebabnya saya pikir itulah masalahnya.
Mari kita ambil contoh URL ini:
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Sekarang mari kita jalankan curl -I
untuk mendapatkan informasi header pada file itu:
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
Output untuk itu akan menjadi seperti ini:
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==
Sekarang hal-hal yang perlu diperhatikan di sini adalah header Date
(tanggal dan waktu file pada titik akhir CloudFront) dan X-Cache
(status pengiriman konten Amazon). Perilaku khas di Amazon CloudFront adalah akses pertama akan menyampaikan "Miss from cloudfront" dan kemudian jika Anda melakukan yang lain curl -I
segera setelah itu harus ada Hit from cloudfront
.
Tapi bukan itu yang saya lihat tadi. Berikut ini rincian Date
dan X-Cache
status sekelompok akses yang saya buat:
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
Alasan mengapa ada banyak item dengan data yang persis sama yang Hit from cloudfront
mendekati akhir adalah karena itulah yang terjadi pada CDN: Jika titik akhir CDN memiliki file, maka Date
berkorelasi dengan tanggal pembuatan / modifikasi aktual file yang titik akhir memiliki.
Anda perhatikan empat akses pertama terpisah beberapa detik, dengan tanggal / waktu yang berbeda dan semuanya Miss from cloudfront
, kan? Itu berarti titik akhir CDN hanya menggema kembali bahwa ada upaya untuk mengakses file pada waktu itu dan semua upaya gagal.
Jadi penilaian kursi saya tentang hal ini adalah bahwa sistem Tumblr tidak mengikuti CDN Amazon CloudFront atau Amazon CloudFront CDN tidak mengikuti Tumblr. Tetapi dalam beberapa hal, ada yang salah di sisi server mereka. Dan karena ini adalah CDN, seseorang yang mengakses file di satu lokasi mungkin tidak melihat masalah sementara orang lain di lokasi lain akan mengalami masalah melihat gambar.
Yang bisa dikatakan, saya tidak berpikir ini dapat dengan mudah diselesaikan di sisi klien.
EDIT: Jadi poster asli menambahkan beberapa URL baru, dan ini masih menunjuk ke masalah sisi server, tapi saya hanya ingin memposting rincian untuk catatan.
EdgeCast & Highwinds Ide CDN
Jadi poster asli menambahkan lebih spesifik, jadi di sini lebih detail berdasarkan posting blog yang digunakan sebagai contoh:
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
Dan URL gambar ini disediakan sebagai contoh URL dalam posting itu:
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
Dan kedua URL gambar itu memang gagal. Tapi dari sisi saya — melihat kode sumber asli dari posting blog dari Brooklyn, New York, AS — saya tidak melihat gs1.wac.edgecastcdn.net
URL EdgeCast ( ) itu. Sebaliknya, ini adalah URL yang saya lihat:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
Jadi pemikiran pertama saya adalah mengapa poster asli melihat EdgeCast tersebut ( gs1.wac.edgecastcdn.net
). Tetapi kemudian jika saya melakukan traceroute ke 41.media.tumblr.com
Saya melihat itu adalah server yang dikelola oleh Highwinds (!?!?). Sebaliknya, URL awal yang diteruskan oleh pengguna asli menggunakan 36.media.tumblr.com
nama host dan Anda dapat melihatnya dikelola oleh server Amazon CloudFront CDN.
Yang bisa dikatakan - yang saya katakan sebelumnya - semua ini tampaknya merupakan masalah sisi server dengan Tumblr dan manajemen CDN mereka. Tetapi dari pihak saya — di Brooklyn, New York, AS — saya dengan jelas melihat konten dikirimkan seperti yang diharapkan dari server Highwinds CDN dan juga server Amazon CloudFront CDN. Dari mana URL EdgeCast ini berasal atau bagaimana / mengapa URL itu gagal berada di luar kendali siapa pun di sisi klien. Ini pasti akan menjadi sesuatu untuk dihubungi staf teknologi Tumblr karena tidak ada cara pengguna desktop dapat menyelesaikan ini.
Ide Leeching Gambar
Mungkin tidak relevan lagi, tetapi di sini untuk referensi.
Anda menyatakan ini beri saya petunjuk:
Menggunakan wget
tautan langsung pada gambar berfungsi.
Banyak situs memiliki aturan - biasanya ditetapkan melalui Apache - yang mencegah lintah gambar. Rincian lebih lanjut tentang cara kerja aturan tersebut disediakan di sini dan diringkas sebagai berikut:
Menggunakan .htaccess, Anda dapat melarang tautan panas di server Anda, jadi mereka yang mencoba menautkan ke gambar atau file CSS di situs Anda, misalnya, diblokir (permintaan gagal, seperti gambar yang rusak) atau menyajikan konten yang berbeda ( yaitu: gambar pria yang marah).
Berdasarkan uraian Anda — dan fakta bahwa Anda dapat mengakses gambar melalui wget
—membimbing saya untuk percaya bahwa gambar yang Anda hadapi tidak di-host di Tumblr oleh pengguna, melainkan gambar yang ditempatkan di blog Tumblr tetapi sebenarnya di-host pada yang lain situs
Ketika prosedur lintah gambar standar diberlakukan, melihat gambar tertanam di satu situs yang di-host di situs lain-yang memblokir lintah-akan menghasilkan tautan gambar yang rusak atau mungkin "Stop Leeching!" gambar dikembalikan. Ini karena aturan dasar anti-lintah — seperti yang ada di halaman contoh tersebut — periksa kembali perujuk gambar untuk memastikan bahwa laman yang meminta gambar cocok dengan domain yang menampung gambar.
Jadi ketika Anda mengakses gambar melalui wget
Anda mengakses gambar secara langsung. Jadi aturan lintah gambar tidak akan masuk. Dengan demikian Anda bisa mendapatkan gambar melalui wget
tetapi tidak ketika itu tertanam di halaman lain.