วิธีการแก้ไขปัญหาการแลกเปลี่ยนภาพใน iOS 8 ด้วย Keep-alive + HTTP Pipe-lining


9

นับตั้งแต่ iOS8 ไซต์ที่ฉันจัดการกำลังประสบปัญหาเป็นระยะ ๆ ซึ่งรูปภาพกำลังสลับตำแหน่งกับภาพอื่น ๆ เรื่องนี้ได้รับการกล่าวถึงในหลายแห่ง แต่ไม่มีวิธีแก้ปัญหา:

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/

แอปมันเป็นปัญหาใน iOS5 ในอดีต เซิร์ฟเวอร์ของเราใช้ Lightspeed พร้อมซับในและรักษาไว้ ผู้ดูแลระบบเซิร์ฟเวอร์ของฉันยืนยันว่าการวางท่อส่งคืนทรัพย์สินตามลำดับที่ร้องขอ เขากล่าวถึงการปิดการใช้งาน Keep-alive อาจช่วยแก้ไขปัญหาได้ แต่จะเพิ่มปริมาณเซิร์ฟเวอร์อย่างมากซึ่งจะเป็นสิ่งที่เลวร้ายจริงๆ

เนื้อหาทั้งหมดของฉันผ่านความยาวของเนื้อหาอย่างถูกต้องเช่นกัน

ตอนนี้ฉันกำลังใกล้ตายแล้วเพื่อหาทางแก้ไขปัญหานี้ ด้วยผู้ใช้ของฉันจำนวนมากที่ใช้ iOS จึงเริ่มมีความคับข้องใจสำหรับทุกคน

มันเริ่มเกิดขึ้นเมื่อมีการเปิดตัว iOS8 ซึ่งมีการเปลี่ยนแปลงที่ค่อนข้างหนักใน Safari ในทุกรุ่น 8 ปัญหายังคงมีอยู่ อย่างที่ฉันบอกว่ามันไม่สม่ำเสมอและผู้ใช้ของเราเริ่มที่จะตำหนิเราเนื่องจาก 'ไม่มีเว็บไซต์อื่นที่มีปัญหา'

ฉันสงสัยว่าใครจะได้เห็นแสงนี้บ้าง? มีใครประสบปัญหานี้และ / หรือพบวิธีแก้ปัญหาหรือไม่

นี่คือลิงค์ไปยังเว็บไซต์ของฉันที่เป็นปัญหา


ยินดีต้อนรับสู่ ServerFault David คุณช่วย จำกัด ปัญหานี้ให้แคบลงจนอาจเป็น html ของเว็บไซต์ได้หรือไม่ หรือนี่เป็นปัญหาของ Safari โดยเฉพาะ ฉันไม่มี iPhone ที่จะทำการทดสอบ แต่บางทีคุณสามารถระบุได้ว่าภาพใดบ้างที่เป็นที่ค้าขายดังนั้นคนที่นี่ที่ไม่เข้าใจพอที่จะเป็นเจ้าของ Droid (เรื่องตลก) สามารถสร้างปัญหาได้หรือไม่ ลองติดตั้งเบราว์เซอร์อื่นบนโทรศัพท์และดูว่าเป็นปัญหา Safari หรือปัญหา iOS
MDMoore313

2
@BigHomie เป็นเรื่องเฉพาะสำหรับ Safari บน iOS8 ดูเหมือนจะไม่เกิดขึ้นใน Google Chrome และปัญหาดังกล่าวไม่ได้เกิดขึ้นบนแพลตฟอร์มอื่น ๆ
เดวิด

หวัดดี! ฉันมีคำถามมากมายที่จะช่วยให้คุณมุ่งเน้นไปที่ปัญหาจริง ปัญหาเกิดขึ้นกับ Safari OS X หรือไม่ ปัญหาเกิดขึ้นใน Safari iOS ใน Simulator หรือไม่? คุณลองเปิดลิงค์ตัวตรวจสอบ Safari เพื่อตรวจสอบว่าลิงก์ไปยังรูปภาพถูกต้องหรือไม่หรือเป็นปัญหาแคชของ Safari หรือไม่ คำถามเหล่านี้ควรนำเราไปสู่รากเหง้าของปัญหา
DeadEye

@DeadEye ฉันค่อนข้างมั่นใจว่าปัญหาจะเกิดขึ้นเฉพาะใน iOS 8 ฉันไม่แน่ใจว่ามันเกิดขึ้นในการจำลองและผู้ตรวจสอบเว็บไม่แสดงอะไรผิดปกติ ในความเป็นจริงภาพกลับมาพร้อมกับชื่อไฟล์ที่ถูกต้องแม้ภาพผิด ปัญหาที่ใหญ่ที่สุดของฉันคือรายงานเรดาร์ต่อแอปเปิ้ลถูกปิดโดยไม่มีเหตุผลและ openradar ไม่ได้ทำอะไรเลยทั้งๆที่มีข้อมูลทั้งหมดในกระดานสนทนา
เดวิด

หากคุณพยายามไปยังเส้นทางภาพของภาพที่สลับผ่าน Safari iOS เป็นภาพที่ถูกต้องหรือไม่
DeadEye

คำตอบ:


2

เรามีปัญหานี้เช่นกันและทางออกสำหรับเราคือลบแท็กทั้งหมดใน HTML ของเราและใช้คลาส css กับคุณสมบัติพื้นหลังแทน นี่คือตัวอย่าง:

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

ฉันรู้สึกอึดอัดใจฉันรู้ แต่นี่เป็นวิธีเดียวที่จะแก้ไขปัญหาให้เราได้ ข้อเสียเปรียบอย่างหนึ่งคือเราต้องลบ "alt" สำหรับภาพ แต่ฉันคิดว่าคุณสามารถแก้ปัญหานี้ได้ด้วยจาวาสคริปต์บางอันหากจำเป็น

หวังว่านี่จะช่วยได้!


2

ฉันกำลังจัดการกับปัญหานี้ในเว็บไซต์ใหม่ที่เราเพิ่งเปิดตัว ทุกอย่างดูดีใน FF / Opera / Chrome ฯลฯ แต่ฉันมีปัญหาการสลับภาพ MAJOR ใน iOS8 + ฉันสังเกตเห็นว่ามีเว็บไซต์จำนวนมากที่รายงานปัญหานี้เรียกใช้เว็บเซิร์ฟเวอร์ Litespeed ฉันเปลี่ยนมาใช้ Apache สักครู่เพื่อทดสอบและแน่นอนว่าเว็บไซต์โหลดได้ดี โฮสต์ของฉัน (wiredtree.com บริการที่เป็นเลิศ) และฉันดูตัวเลือกการกำหนดค่าบางอย่างใน Litespeed และปิดใช้งานตัวเลือกทั้งสองนี้:

  • เปิดใช้งานการบีบอัด
  • เปิดใช้งานการบีบอัดข้อมูลแบบไดนามิก

หลังจากปิดการใช้งานทั้งสองเว็บไซต์โหลดได้ดีไม่มีปัญหา มันใช้งานน้อยมาก แต่ก็คุ้มค่าแน่นอน

ตอนแรกเราพยายามปิดการใช้งานแบบ keep-alive เพื่อปิดการใช้งาน HTTP Pipelining อย่างมีประสิทธิภาพ แต่มันไม่ได้แก้ปัญหา ข้างต้นเป็นสิ่งเดียวที่ฉันเคยเห็นที่นำเสนอทางออกที่แท้จริง

หวังว่านี่จะช่วยให้ใครบางคนจัดการกับปัญหาเดียวกัน!


1

ไม่ใช่คำตอบ แต่เป็นวิธีการแก้ปัญหา:

  1. สร้างปัญหาขึ้นอีกครั้งด้วยตัวเองโดยใช้แอพเวอร์ชันพัฒนาโดยใช้เว็บเซิร์ฟเวอร์ที่กำลังผลิต เพียงให้แน่ใจว่าคุณครอบคลุม
  2. สร้างรายการชื่อโฮสต์ / CNAME ใหม่และโฮสต์เสมือนที่เกี่ยวข้องบนเว็บเซิร์ฟเวอร์หรือหากจำเป็นสำหรับขั้นตอนที่ 3 ซึ่งเป็นเซิร์ฟเวอร์ HTTP แยกต่างหากในพอร์ตแยกต่างหาก สิ่งนี้เรียกว่า "เซิร์ฟเวอร์ทดสอบ HTTP"
  3. ชี้รุ่นการทดสอบ / การพัฒนาของคุณไปยังเซิร์ฟเวอร์ HTTP ใหม่นี้และทำให้เกิดปัญหาอีกครั้ง อย่าไปที่ขั้นตอนที่ 4 จนกว่าคุณจะทำสิ่งนี้ได้!
  4. ตอนนี้บนเซิร์ฟเวอร์ HTTP การทดสอบนี้ไม่ว่าจะผ่านการเปลี่ยนเส้นทางหรือการกำหนดค่าอัจฉริยะ (เท่าที่เป็นไปได้กับ Apache) ปิดใช้งาน keepalives, การบีบอัด, https, แคช, pipelining และสิ่งอื่น ๆ ที่คุณนึกออก สร้างปัญหาขึ้นอีกครั้งและจดบันทึกการตั้งค่าทั้งหมดที่ทำสิ่งนี้และสิ่งที่ไม่ทำ
  5. สลับเซิร์ฟเวอร์ Litespeed ด้วย Apahce อีกครั้งควรเป็นเรื่องเล็กน้อยสำหรับดูแลระบบที่ดี ( อะแฮ่ม ) ทำให้เกิดปัญหาอีกครั้ง

หากคุณสามารถสร้างปัญหาขึ้นมาอีกครั้งตลอดขั้นตอนที่ 5 และไม่มีการเปลี่ยนแปลงการกำหนดค่าหรือการเปลี่ยนแปลงซอฟต์แวร์เซิร์ฟเวอร์สร้างความแตกต่างปัญหาคือ iOS และอาจไม่มีอะไรที่คุณสามารถทำได้ (แต่นี่ไม่น่าเป็นไปได้)

หากมีชุดของการเปลี่ยนแปลงการกำหนดค่าที่ไม่ขึ้นอยู่กับ Litespeed (เช่นเกิดขึ้นกับ Apache) เราสามารถแก้ไขปัญหาได้: ใช้BrowserMatchคำสั่งเพื่อตรวจสอบเบราว์เซอร์ (ชุด) เฉพาะ ตั้งค่าพารามิเตอร์การตั้งค่าสำหรับชุดนี้ BrowserMatch คุณจะพบตัวอย่างของสิ่งนี้ย้อนกลับไปได้ไกลเท่าเบราว์เซอร์ IE 3.0 และ Netscape

หากปัญหากลายเป็น Litespeed ให้ใช้วิธีการด้านบนและยื่นข้อบกพร่องด้วยการสนับสนุน Litespeed คุณจ่ายเงินเพื่อสนับสนุนใช่ไหม


1

การใช้โปรโตคอล http / 2 ดูเหมือนว่าได้แก้ไขปัญหาในกรณีของฉันแล้ว แต่ฉันแน่ใจว่าอาจมีการแก้ไข / แก้ไขปัญหานี้จริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.