Canlı tutma + HTTP Boru astarı ile iOS 8'de Görüntü Değiştirme Sorununu nasıl çözebilirim?


9

İOS8'den bu yana, yönettiğim siteler, görüntülerin yerleri diğer görüntülerle değiştirdiği aralıklı bir sorun yaşıyor. Bu, birçok yerde belirtilmiştir, ancak belirgin bir çözümü yoktur:

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-part-3/

geçmişte iOS5'te bir sorun olduğunu öne sürüyor. Sunucumuz Lightspeed'i boru astarlı ve canlı tutuyor. Sunucu yöneticim boru döşemenin varlıkları istedikleri sırayla döndürdüğünü doğruladı. Canlı tutma özelliğini devre dışı bırakmanın sorunu çözebileceğinden bahsetti, ancak sunucu yükünü büyük ölçüde artıracaktı, bu gerçekten kötü bir şey olurdu.

Tüm öğelerim de içerik uzunluğunu doğru bir şekilde geçiriyor.

Buna bir çözüm bulmak için gerçekten çıkmaz bir yerdeyim. Kullanıcılarımın çoğunu iOS kullanarak, herkes için son derece hayal kırıklığı olmaya başladı.

Sadece Safari'de oldukça ağır değişiklikler olan iOS8'in piyasaya sürülmesiyle başladı. Her 8 sürümünde, sorun hala var. Dediğim gibi, aralıklı ve kullanıcılarımız 'başka hiçbir sitede sorun yok' olarak bizi suçlamaya başlıyor.

Birisi buna ışık tutabilir mi acaba? Başka kimse bu problemi yaşadı ve / veya bir çözüm buldu mu?

İşte söz konusu siteme bir bağlantı.


ServerFault David'e hoş geldiniz, bu sorunu belki de web sitesinin html'sine daraltabilir misiniz? Yoksa bu özellikle bir Safari sorunu mu? Test etmek için bir iPhone'um yok, ancak belki de hangi görüntülerin ticaret yerleri olduğunu belirtebilirsiniz, bu yüzden burada bir Droid'e (şaka) sahip olmak için yeterince bilgili olmayan biri sorunu yeniden üretebilir? Ayrıca, telefona farklı bir tarayıcı yüklemeyi deneyin ve bunun bir Safari veya iOS sorunu olup olmadığına bakın.
MDMoore313

2
@BigHomie iOS8'deki Safari'ye özgüdür. Google Chrome'da görünmüyor. Ve sorun başka bir platformda oluşmuyor gibi görünüyor.
David

Selam ! Asıl soruna odaklanmanıza yardımcı olacak birçok sorum var. Sorun Safari OS X'te ortaya çıkıyor mu? Sorun bir Simülatördeki Safari iOS'ta mı oluşuyor? Resimlere bağlantıların doğru olup olmadığını veya Safari'nin önbellek sorunu olup olmadığını kontrol etmek için bir Safari denetçisi bağlantısı açmaya çalıştınız mı? Bu sorular bizi sorunun köküne götürmelidir.
DeadEye

@DeadEye Sorunun yalnızca iOS 8'de gerçekleştiğinden eminim. Bir simülatörde gerçekleşirse ve web denetçisinin olağandışı bir şey göstermediğinden emin değilim. Aslında, görüntüler yanlış görüntüye rağmen doğru dosya adıyla geri gelir. En büyük sorunum, elmanın radar raporunun sebepsiz kapatılması ve openradar'ın tartışma forumlarındaki tüm bilgilere rağmen üzerinde herhangi bir faaliyetinin olmaması.
David

Safari iOS aracılığıyla değiştirilen bir görüntünün görüntü yoluna doğrudan gitmeye çalışırsanız, doğru resim midir?
DeadEye

Yanıtlar:


2

Bu sorunu da yaşadık ve çözümümüz HTML'deki tüm etiketleri kaldırmak ve bunun yerine background özelliği ile css sınıflarını kullanmaktı. İşte bir örnek:

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

Biraz garip geliyor, biliyorum, ama sorunu bizim için çözmenin tek yolu buydu. Tek dezavantajı, görüntüler için "alt" kaldırmak zorunda kaldı, ancak sanırım gerekirse bazı javascript ile çözebilirsiniz.

Bu yardımcı olur umarım!


2

Bu konuyla yeni başlattığımız yeni bir web sitesinde ilgileniyordum. FF / Opera / Chrome, vb. De her şey iyi görünüyordu, ancak iOS8 + 'da MAJOR görüntü değiştirme sorunları yaşadım. Bu sorunu bildiren sitelerin çoğunun Litespeed web sunucusunu çalıştırdığını fark ettim. Test etmek için bir anlığına Apache'ye geçtim ve web sitesinin yeterince iyi yüklendiğinden eminim. Ev sahibim (wiredtree.com, mükemmel hizmet) ve Litespeed'deki yapılandırma seçeneklerinden bazılarına baktım ve bu iki seçeneği devre dışı bıraktım:

  • Sıkıştırmayı etkinleştir
  • Dinamik Sıkıştırmayı Etkinleştir

Bu ikisini devre dışı bıraktıktan sonra, web siteleri sorunsuz bir şekilde yüklendi. Çok hafif bir performans darbesi aldı, ama kesinlikle buna değer.

İlk başta, HTTP Pipelining'i etkili bir şekilde devre dışı bırakmak için canlı tutma özelliğini devre dışı bırakmaya çalıştık, ancak sorunu çözmedi. Yukarıdaki gerçek bir çözüm sundu gördüğüm tek şey.

Umarım bu aynı sorunlarla uğraşan birine yardımcı olabilir!


1

Bir cevap değil, sorunun çözümü için bir yaklaşım:

  1. Üretimdeki web sunucularını kullanarak uygulamanın geliştirme sürümünü kullanarak sorunu kendi başınıza yeniden oluşturun. Sadece örtbas ettiđinden emin ol.
  2. Web sunucusunda yeni bir ana bilgisayar adı / CNAME girişi ve karşılık gelen sanal ana bilgisayar veya 3. adım için gerekirse ayrı bir bağlantı noktasında ayrı bir HTTP sunucusu oluşturun. Bu, "HTTP sunucusunu test et" olarak bilinir
  3. Test / geliştirme sürümünüzü bu yeni HTTP sunucusuna yönlendirin ve sorunu yeniden oluşturun. Bunu yapana kadar 4. adıma geçmeyin!
  4. Şimdi bu test HTTP sunucusunda, yönlendirmeler veya akıllı yapılandırma (Apache ile mümkün olduğunca) yoluyla, saklayıcıları, sıkıştırmayı, https, önbelleğe alma, boru hattı ve aklınıza gelebilecek diğer her şeyi devre dışı bırakın. Sorunu yeniden oluşturun ve bunu yapan ve yapmayan tüm yapılandırma tuples dikkat edin.
  5. Litespeed sunucusunu Apahce ile değiştirin. Yine, iyi bir sistem yöneticisi için oldukça önemsiz olmalıdır. ( ahem ). Sorunu yeniden üretin.

Sorunu 5. adımda tamamen yeniden oluşturabiliyorsanız ve hiçbir yapılandırma değişikliği veya sunucu yazılımı değişikliği fark yaratmazsa, sorun iOS'dur ve muhtemelen yapabileceğiniz hiçbir şey yoktur. (Ama bu pek olası değil.)

Bununla birlikte, Litespeed'e bağlı olmayan bir dizi yapılandırma değişikliği varsa (yani, Apache ile de gerçekleşir), bir geçici çözüm yapabiliriz: BrowserMatchBelirli (dizi) tarayıcıları algılamak için yönergeleri kullanın ; bu kümenin BrowserMatch kümesi için yapılandırma parametrelerini ayarlayın. IE 3.0 ve Netscape tarayıcılarına kadar uzanan bu tür şeylerin örneklerini bulacaksınız.

Sorun Litespeed olduğu ortaya çıkarsa, yukarıdaki yaklaşımı kullanın ve Litespeed desteği ile bir hata gönderin. Destek için para ödüyorsun, değil mi?


1

http / 2 protokolünü kullanmak benim durumumda sorunu çözmüş gibi görünüyor. Ancak, im bu soruna gerçek bir düzeltme / çözüm olabilir eminim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.