Làm cách nào để khắc phục sự cố hoán đổi hình ảnh trong iOS 8 với tính năng giữ nguyên + ống HTTP?


9

Kể từ iOS8, các trang web tôi quản lý đang gặp sự cố không liên tục trong đó hình ảnh được hoán đổi vị trí với các hình ảnh khác. Điều này đã được đề cập ở một số nơi, nhưng không có giải pháp rõ ràng:

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/

Nó xuất hiện nó là một vấn đề trong iOS5 trong quá khứ. Máy chủ của chúng tôi đang chạy Lightspeed với ống lót và duy trì sự sống. Quản trị viên máy chủ của tôi đã xác nhận rằng đường ống đang trả lại tài sản theo thứ tự họ được yêu cầu. Ông đề cập đến việc vô hiệu hóa việc giữ mạng có thể giải quyết vấn đề, nhưng sẽ tăng tải máy chủ một cách ồ ạt, đây sẽ là một điều thực sự tồi tệ.

Tất cả tài sản của tôi cũng đang chuyển chính xác độ dài nội dung.

Bây giờ tôi thực sự đang ở một ngõ cụt cho một giải pháp cho vấn đề này. Với rất nhiều người dùng của tôi sử dụng iOS, nó bắt đầu cực kỳ gây thất vọng cho mọi người.

Nó chỉ bắt đầu xảy ra với sự ra mắt của iOS8 có một số thay đổi khá nặng nề đối với Safari. Trong mỗi bản phát hành, 8, vấn đề vẫn còn đó. Như tôi đã nói, nó không liên tục và người dùng của chúng tôi bắt đầu đổ lỗi cho chúng tôi vì 'không có trang web nào khác có vấn đề'.

Tôi đã tự hỏi nếu có ai có thể làm sáng tỏ về điều này? Có ai khác gặp vấn đề này và / hoặc tìm thấy một giải pháp?

Đây là một liên kết đến trang web của tôi trong câu hỏi.


Chào mừng bạn đến với ServerFault David, bạn có thể thu hẹp vấn đề này xuống có lẽ là html của trang web không? Hay đây cụ thể là một vấn đề Safari? Tôi không có iPhone để kiểm tra, nhưng có lẽ bạn có thể chỉ ra hình ảnh nào là nơi giao dịch, vì vậy ai đó ở đây không đủ hiểu biết để sở hữu một Droid (trò đùa) có thể tái tạo vấn đề? Ngoài ra, hãy thử cài đặt một trình duyệt khác trên điện thoại và xem đó là sự cố Safari hay sự cố iOS.
MDMoore313

2
@BigHomie Nó dành riêng cho Safari trên iOS8. Nó dường như không xảy ra trên Google Chrome. Và vấn đề không xuất hiện trên bất kỳ nền tảng nào khác.
David

Chào ! Tôi có nhiều câu hỏi để giúp bạn tập trung vào vấn đề thực sự. Sự cố có xảy ra trên Safari OS X không? Sự cố có xảy ra trong Safari iOS trong Trình mô phỏng không? Bạn đã thử mở một liên kết thanh tra Safari để kiểm tra xem các liên kết đến hình ảnh có đúng không hoặc liệu đó có phải là sự cố bộ đệm của Safari không? Những câu hỏi này sẽ dẫn chúng ta đến gốc rễ của vấn đề.
DeadEye

@DeadEye Tôi khá chắc chắn rằng sự cố chỉ xảy ra trong iOS 8. Tôi không chắc chắn nếu nó xảy ra trong trình giả lập và trình kiểm tra web không hiển thị bất cứ điều gì bất thường. Trong thực tế, hình ảnh trở lại với tên tệp chính xác mặc dù hình ảnh sai. Vấn đề lớn nhất của tôi là báo cáo radar cho apple đã bị đóng mà không có lý do và openradar không có bất kỳ hoạt động nào trên đó mặc dù có tất cả thông tin trên các diễn đàn thảo luận.
David

Nếu bạn cố gắng đi trực tiếp vào đường dẫn hình ảnh của một hình ảnh được hoán đổi thông qua Safari iOS, đó có phải là hình ảnh chính xác không?
DeadEye

Câu trả lời:


2

Chúng tôi cũng gặp vấn đề này và giải pháp cho chúng tôi là xóa tất cả các thẻ trong HTML của chúng tôi và sử dụng các lớp css với thuộc tính nền thay thế. Đây là một ví dụ:

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

Tôi cảm thấy hơi khó xử, nhưng đây là cách duy nhất giải quyết vấn đề cho chúng tôi. Một nhược điểm là chúng tôi đã phải xóa "alt" cho hình ảnh nhưng tôi đoán bạn có thể giải quyết điều đó bằng một số javascript nếu cần thiết.

Hi vọng điêu nay co ich!


2

Tôi đã xử lý vấn đề này trên một trang web mới mà chúng tôi vừa ra mắt. Mọi thứ đều có vẻ tốt trong FF / Opera / Chrome, v.v. nhưng tôi gặp vấn đề hoán đổi hình ảnh CHÍNH trong iOS8 +. Tôi nhận thấy rằng rất nhiều trang web báo cáo vấn đề này chạy máy chủ web Litespeed. Tôi đã chuyển sang Apache một lúc để kiểm tra và chắc chắn rằng trang web đã tải tốt. Máy chủ của tôi (Wiredtree.com, dịch vụ tuyệt vời) và tôi đã xem xét một số tùy chọn cấu hình trong Litespeed và đã tắt hai tùy chọn này:

  • Kích hoạt tính năng nén
  • Kích hoạt tính năng nén động

Sau khi vô hiệu hóa hai cái đó, các trang web được tải lên tốt mà không có vấn đề. Nó có một hiệu suất rất nhẹ, nhưng chắc chắn giá trị nó.

Lúc đầu, chúng tôi đã cố gắng vô hiệu hóa để vô hiệu hóa để vô hiệu hóa HTTP Pipelining, nhưng nó không giải quyết được vấn đề. Trên đây là điều duy nhất tôi thấy đưa ra một giải pháp thực sự.

Hy vọng rằng điều này có thể giúp ai đó xử lý các vấn đề tương tự!


1

Không phải là một câu trả lời, mà là một cách tiếp cận để giải quyết vấn đề:

  1. Tự tạo lại sự cố bằng cách sử dụng phiên bản phát triển của ứng dụng bằng các máy chủ web đang sản xuất. Chỉ cần chắc chắn rằng bạn bao gồm điều đó.
  2. Tạo một mục nhập tên máy chủ / CNAME mới và máy chủ ảo tương ứng trên máy chủ web hoặc nếu cần cho bước 3, một máy chủ HTTP riêng trên một cổng riêng. Điều này được gọi là "máy chủ HTTP thử nghiệm"
  3. Trỏ phiên bản thử nghiệm / phát triển của bạn đến máy chủ HTTP mới này và tái tạo vấn đề. Đừng đến bước 4 cho đến khi bạn có thể làm điều này!
  4. Bây giờ trên máy chủ HTTP thử nghiệm này, thông qua chuyển hướng hoặc cấu hình thông minh (có thể với Apache), vô hiệu hóa các thủ tục lưu trữ, nén, https, bộ nhớ đệm, đường ống và bất cứ điều gì khác bạn có thể nghĩ tới. Tái tạo vấn đề và lưu ý tất cả các bộ cấu hình thực hiện việc này và các bộ dữ liệu không.
  5. Trao đổi máy chủ Litespeed với Apahce. Một lần nữa, nên khá tầm thường cho một sysadmin tốt. ( ahem ). Vấn đề sinh sản.

Nếu bạn có thể tái tạo vấn đề trong suốt bước 5 và không có thay đổi cấu hình hoặc thay đổi phần mềm máy chủ nào tạo ra sự khác biệt, thì vấn đề là iOS và có lẽ bạn không thể làm gì. (Nhưng điều này là không thể.)

Tuy nhiên, nếu có một tập hợp các thay đổi cấu hình không phụ thuộc vào Litespeed (nghĩa là cũng xảy ra với Apache), thì chúng ta có thể thực hiện một cách giải quyết: Sử dụng các BrowserMatchchỉ thị để phát hiện các trình duyệt (bộ) cụ thể; đặt tham số cấu hình cho bộ cài đặt BrowserMatch này. Bạn sẽ tìm thấy các ví dụ về loại điều này sẽ lùi xa như các trình duyệt IE 3.0 và Netscape.

Nếu sự cố hóa ra là Litespeed, hãy sử dụng phương pháp trên và báo lỗi với sự hỗ trợ của Litespeed. Bạn đang trả tiền cho hỗ trợ, phải không?


1

sử dụng giao thức http / 2 dường như đã giải quyết vấn đề trong trường hợp của tôi. Nhưng, tôi chắc chắn có thể có một giải pháp / giải pháp thực tế cho vấn đề này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.