Bagaimana cara memperbaiki Masalah Swapping Gambar di iOS 8 dengan tetap-hidup + HTTP Pipe-lining?

9

Sejak iOS8, situs yang saya kelola mengalami masalah berselang-seling di mana gambar bertukar lokasi dengan gambar lain. Ini telah disebutkan di sejumlah tempat, tetapi tanpa solusi yang jelas:

https://discussions.apple.com/thread/6574663

http://tech.vg.no/2011/12/14/safari-on-ios-5-randomly-switches-images/

http://tech.vg.no/2012/02/01/safari-on-ios-5-randomly-switches-images-images-part-3/

itu appers itu masalah di iOS5 di masa lalu. Server kami menjalankan Lightspeed dengan lapisan pipa dan tetap hidup. Admin server saya telah mengkonfirmasi bahwa pipa-pipa mengembalikan aset dalam urutan yang diminta. Dia menyebutkan bahwa menonaktifkan keep-live dapat menyelesaikan masalah ini, tetapi akan meningkatkan beban server secara besar-besaran, yang akan menjadi hal yang sangat buruk.

Semua aset saya melewati panjang konten dengan benar juga.

Saya benar-benar di jalan buntu sekarang untuk solusi untuk ini. Dengan begitu banyak pengguna saya menggunakan iOS, awalnya menjadi sangat frustasi untuk semua orang.

Itu hanya mulai terjadi dengan diperkenalkannya iOS8 yang memiliki beberapa perubahan yang cukup berat untuk Safari. Di setiap rilis, dari 8, masalahnya masih ada. Seperti yang saya katakan, ini intermiten dan pengguna kami mulai menyalahkan kami karena 'tidak ada situs lain yang memiliki masalah'.

Aku ingin tahu apakah ada yang bisa menjelaskan ini? Adakah orang lain yang mengalami masalah ini dan / atau menemukan solusi?

Berikut ini tautan ke situs saya yang dimaksud.

David
sumber
Selamat datang di ServerFault David, dapatkah Anda mempersempit masalah ini hingga ke html situs web? Atau apakah ini khusus masalah Safari? Saya tidak memiliki iPhone untuk diuji, tetapi mungkin Anda dapat menunjukkan gambar apa yang diperdagangkan, jadi seseorang di sini yang tidak cukup pintar untuk memiliki Droid (lelucon) dapat mereproduksi masalah ini? Juga, coba instal peramban lain di telepon dan lihat apakah itu masalah Safari atau masalah iOS.
MDMoore313
2
@BigHomie Ini khusus untuk Safari di iOS8. Sepertinya tidak terjadi di Google Chrome. Dan masalah tampaknya tidak terjadi pada platform lain.
David
Hai! Saya punya banyak pertanyaan untuk membantu Anda fokus pada masalah sebenarnya. Apakah masalah terjadi pada Safari OS X? Apakah masalah terjadi di Safari iOS di Simulator? Apakah Anda mencoba membuka tautan inspektur Safari untuk memeriksa apakah tautan ke gambar sudah benar atau apakah itu masalah cache Safari? Pertanyaan-pertanyaan ini harus menuntun kita ke akar masalah.
DeadEye
@DeadEye Saya cukup yakin masalah hanya terjadi di iOS 8. Saya tidak yakin jika itu terjadi dalam simulator dan web inspektur tidak menunjukkan sesuatu yang tidak biasa. Bahkan, gambar kembali dengan nama file yang benar meskipun gambar yang salah. Masalah terbesar saya adalah bahwa laporan radar ke apple ditutup tanpa alasan dan openradar tidak memiliki aktivitas apa pun di dalamnya terlepas dari semua informasi di forum diskusi.
David
Jika Anda mencoba untuk langsung menuju jalur gambar dari gambar yang ditukar melalui Safari iOS, apakah itu gambar yang benar?
DeadEye

Jawaban:

2

Kami juga mengalami masalah ini dan solusi bagi kami adalah menghapus semua tag dalam HTML kami dan menggunakan kelas css dengan properti latar belakang sebagai gantinya. Ini sebuah contoh:

.img_logo {
  background: url(../images/logo.png?v=20150427) no-repeat;
  width: 175px;
  height: 49px;
  display: block;
}

Rasanya agak canggung, saya tahu, tetapi ini adalah satu-satunya cara yang memecahkan masalah bagi kami. Salah satu kelemahannya adalah kami harus menghapus "alt" untuk gambar, tetapi saya kira Anda dapat menyelesaikannya dengan beberapa javascript jika perlu.

Semoga ini membantu!

Mikael Lundberg
sumber
2

Saya berurusan dengan masalah ini di situs web baru yang baru saja kami luncurkan. Semuanya terlihat bagus di FF / Opera / Chrome, dll. Tapi saya punya masalah pertukaran gambar UTAMA di iOS8 +. Saya perhatikan bahwa banyak situs yang melaporkan masalah ini menjalankan server web Litespeed. Saya beralih ke Apache sejenak untuk menguji, dan tentu saja, situs web dimuat dengan baik. Tuan rumah saya (wiredtree.com, layanan terbaik) dan saya melihat beberapa opsi konfigurasi di Litespeed, dan menonaktifkan dua opsi ini:

  • Aktifkan Kompresi
  • Aktifkan Kompresi Dinamis

Setelah menonaktifkan keduanya, situs web dimuat dengan baik tanpa masalah. Butuh hit kinerja yang sangat sedikit, tapi pasti sepadan.

Pada awalnya, kami mencoba untuk menonaktifkan keep-hidup untuk secara efektif menonaktifkan HTTP Pipelining, tetapi itu tidak menyelesaikan masalah. Di atas adalah satu-satunya hal yang saya lihat yang menawarkan solusi nyata.

Semoga ini bisa membantu seseorang menghadapi masalah yang sama!

Kevin
sumber
1

Bukan jawaban, tetapi pendekatan untuk memecahkan masalah:

  1. Reproduksi masalahnya sendiri menggunakan versi pengembangan aplikasi menggunakan server web dalam-produksi. Pastikan Anda menutupinya.
  2. Buat entri hostname / CNAME baru dan host virtual terkait di server web, atau jika perlu untuk langkah 3, server HTTP terpisah pada port terpisah. Ini dikenal sebagai "server uji HTTP"
  3. Arahkan versi pengujian / pengembangan Anda ke server HTTP baru ini dan buat kembali masalahnya. Jangan lanjutkan ke langkah 4 sampai Anda dapat melakukan ini!
  4. Sekarang pada pengujian ini server HTTP, baik melalui pengalihan atau konfigurasi cerdas (mungkin dengan Apache), nonaktifkan keepalives, kompresi, https, caching, pipelining, dan hal lain yang dapat Anda pikirkan. Reproduksi masalah dan catat semua tuple konfigurasi yang melakukan ini dan yang tidak.
  5. Tukar server Litespeed dengan Apahce. Sekali lagi, harus cukup sepele untuk sysadmin yang baik. ( ahem ). Mereproduksi masalah.

Jika Anda dapat mereproduksi masalah sampai langkah 5, dan tidak ada set perubahan konfigurasi atau perubahan perangkat lunak server yang membuat perbedaan, masalahnya adalah iOS dan mungkin tidak ada yang bisa Anda lakukan. (Tapi ini tidak mungkin.)

Jika demikian, ada satu set perubahan konfigurasi yang tidak tergantung pada Litespeed (yaitu, terjadi juga dengan Apache), maka kita dapat melakukan kerja-sekitar: Gunakan BrowserMatcharahan untuk mendeteksi tertentu (set) browser; atur parameter konfigurasi untuk set BrowserMatch ini. Anda akan menemukan contoh-contoh seperti ini sejauh peramban IE 3.0 dan Netscape.

Jika masalahnya ternyata adalah Litespeed, gunakan pendekatan di atas dan ajukan bug dengan dukungan Litespeed. Anda membayar untuk dukungan, bukan?

Otheus
sumber
1

menggunakan protokol http / 2 tampaknya telah menyelesaikan masalah dalam kasus saya. Tapi, saya yakin mungkin ada perbaikan / solusi aktual untuk masalah ini.

David
sumber