Як виправити проблему з заміною зображень у iOS 8 за допомогою режиму Keep-Live + HTTP Pipe?


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 з накладками на труби і залишається в живих. Мій адміністратор сервера підтвердив, що накладки труб повертають активи в тому порядку, в якому вони були запитувані. Він зазначив, що вимкнення режиму зберігання життя може вирішити проблему, але це значно збільшить завантаження сервера, що було б дуже поганою справою.

Усі мої активи теж передають довжину вмісту.

Зараз я справді в глухий кут, щоб вирішити це. Оскільки так багато моїх користувачів, що використовують iOS, його початок вкрай засмучує всіх.

Це почалося лише після введення iOS8, який змінив Safari досить сильно. У кожному випуску, з 8, проблема все ще є. Як я вже говорив, це періодично, і наші користувачі починають звинувачувати нас у тому, що "жоден інший сайт не має проблеми".

Мені було цікаво, чи може хтось пролити про це світло? Хто-небудь ще відчував цю проблему та / або знайшов рішення?

Ось посилання на мій сайт, про який йдеться.


Ласкаво просимо до ServerFault David, чи можете ви звузити цю проблему до, можливо, html веб-сайту? Або це конкретно питання Safari? У мене немає iPhone для тестування, але, можливо, ви можете вказати, які зображення є торговими місцями, тож хтось тут, хто недостатньо кмітливий, щоб володіти Droid (жарт), може відтворити проблему? Крім того, спробуйте встановити інший веб-переглядач на телефон і побачити, чи це проблема Safari чи проблема iOS.
MDMoore313

2
@BigHomie Це специфічно для Safari на iOS8. Схоже, це не відбувається в Google Chrome. І проблема, схоже, не виникає на будь-якій іншій платформі.
Девід

Привіт ! У мене є багато питань, які допоможуть вам зосередитись на реальній проблемі. Чи виникає проблема в Safari OS X? Чи виникає проблема в Safari iOS в тренажері? Ви намагалися відкрити посилання інспектора Safari, щоб перевірити, чи правильні посилання на зображення чи це проблема кешу Safari? Ці питання повинні привести нас до коріння проблеми.
DeadEye

@DeadEye Я майже впевнений, що проблема виникає лише в iOS 8. Я не впевнений, якщо це відбувається в тренажері, а веб-інспектор не показує нічого незвичайного. Насправді зображення повертаються з правильним іменем файлу, незважаючи на неправильне зображення. Моя найбільша проблема полягає в тому, що звіт про радіолокацію до Apple було закрито без причин, і 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" для зображень, але, мабуть, ви можете вирішити це за допомогою JavaScript, якщо це необхідно.

Сподіваюся, це допомагає!


2

Я займався цим питанням на новому веб-сайті, який ми тільки що запустили. У FF / Opera / Chrome і все добре виглядало, але у мене були ОСНОВНІ проблеми із заміною зображення в iOS8 +. Я помітив, що на багатьох сайтах, які повідомляють про цю проблему, працює веб-сервер Litespeed. Я перейшов на мить до Apache, щоб перевірити, і, напевно, веб-сайт завантажений просто чудово. Мій хост (wiredtree.com, чудовий сервіс) і я переглянув деякі параметри конфігурації в Litespeed і відключив ці два варіанти:

  • Увімкнути стиснення
  • Увімкнути динамічне стиснення

Після вимкнення цих двох сайтів веб-сайти завантажувались просто без проблем. Це зайняло дуже незначний хіт, але, безумовно, того варто.

Спочатку ми намагалися відключити режим "живого життя", щоб ефективно відключити HTTP Pipelining, але це не вирішило проблему. Сказане - це єдине, що я бачив, що пропонувало справжнє рішення.

Сподіваємось, це може допомогти комусь, хто займається тими ж проблемами!


1

Не відповідь, а підхід до вирішення проблеми:

  1. Відтворіть проблему самостійно, використовуючи розробну версію програми, використовуючи внутрішні веб-сервери. Просто переконайтеся, що ви прикриєте це.
  2. Створіть на веб-сервері новий запис імені хоста / CNAME та відповідний віртуальний хост або, якщо необхідно, для кроку 3, окремий сервер HTTP на окремому порту. Це відомо як "тестовий сервер HTTP"
  3. Наведіть свою тестову / версійну розробку на цей новий сервер HTTP та відтворіть проблему. Не переходьте до кроку 4, поки не зможете цього зробити!
  4. Тепер на цьому тестовому сервері HTTP, через переспрямування або інтелектуальну конфігурацію (можливо, з Apache), відключіть keepalives, стиснення, https, кешування, конвеєр та все, що ви можете придумати. Повторіть проблему та врахуйте всі параметри конфігурації, які роблять це, і ті, що не роблять.
  5. Поміняйте сервер Litespeed на Apahce. Знову ж таки, має бути досить тривіально для хорошого сисадміна. ( гм ). Повторити проблему.

Якщо ви можете відтворити проблему на всьому кроці через крок 5, і жоден набір змін конфігурації чи зміни серверного програмного забезпечення не впливають на проблему, проблема полягає в iOS і, ймовірно, ви нічого не можете зробити. (Але це малоймовірно.)

Якщо ж є набір змін конфігурації, які не залежать від Litespeed (тобто відбувається також з Apache), то ми можемо обійтися: Використовуйте BrowserMatchдирективи для виявлення конкретного (набору) браузерів; встановити параметри конфігурації для цього набору BrowserMatch. Ви знайдете приклади подібних речей, починаючи з браузерів IE 3.0 та Netscape.

Якщо проблема виявилася Litespeed, скористайтеся вищевказаним підходом та подайте помилку з підтримкою Litespeed. Ви платите за підтримку, чи не так?


1

використання протоколу http / 2, схоже, вирішило проблему в моєму випадку. Але я впевнений, що може бути фактичне виправлення / вирішення цієї проблеми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.