2015-12-07 5 views
3

Я ищу помощь, чтобы понять странную задержку загрузки на iOS. У меня есть этот точный HTML:Safari на iOS ждет 10-30 дней перед загрузкой JavaScript внизу страницы

<!DOCTYPE html> 

<img src="img/potatoes0.png"/> 
<img src="img/potatoes1.png"/> 
<img src="img/potatoes2.png"/> 
<img src="img/potatoes3.png"/> 
<img src="img/potatoes4.png"/> 
<img src="img/potatoes5.png"/> 
<img src="img/potatoes6.png"/> 
<img src="img/potatoes7.png"/> 

<script src="js/jquery-2.1.4.min.js"></script> 

... плюс восемь идентичных изображений картофеля и копию JQuery, все размещенную на удаленном веб-сервере.

Эта страница загружается довольно много мгновенно в обычном браузере, но Safari на iPhone (или в тренажере IOS на моем компьютере) ждет 11 секунд перед загрузкой JS:

  • изображения загружаются в основном сразу, а затем браузер ждет около 10 секунд, прежде чем начать загрузку JS.
  • Я подтвердил с Wireshark, что запрос не выходит до отметки десяти секунд, задержка составляет , а не на стороне сервера.
  • Если я добавляю больше изображений, задержка увеличивается (например, до 30 секунд), даже если изображения по-прежнему занимают менее секунды до полной загрузки.
  • Если я добавлю больше файлов JavaScript, браузер загрузит их все одновременно после задержки.

Что, черт возьми, происходит?

+0

Нет '' элемент? – Duopixel

+1

@Duopixel Если вы не хотите запускать 'body' с элементом, который также может отображаться в' head', он необязателен в HTML5 и запускается, как только элемент не '' head' ('img', в этом случай). Я попробовал добавить один, хотя и никаких изменений. – s4y

+0

@ Скрипичный Я столкнулся с аналогичной проблемой. Задержка в моем случае всегда составляет около 31-32 секунды. Вы могли узнать? – detj

ответ

0

jQuery не запускается, пока не загрузится вся DOM.

Итак, если у вас есть куча изображений - jQuery не запускается, пока все они не будут загружены. Чтобы ускорить это, попробуйте ленивую загрузку изображений.

Одна вещь, чтобы отметить Javscript во всех формах, применительно к мобильным браузерам. Если у вас есть какая-либо прокрутка - Javascript задержится до тех пор, пока не будет прокрутка (это уменьшит разряд батареи на мобильных устройствах, уменьшив нагрузку на процессор). Это может быть или не быть связано с вашей проблемой, но должно отмечаться всякий раз, когда проблема JS возникает только в мобильных браузерах.

+0

Загрузка изображений в течение первых двух секунд. Safari ждет, пока десять секунд начнут загружать jQuery. (Ничего особенного jQuery здесь не происходит, то же самое происходит, если вы замените его другим JS-файлом). – s4y

1

Я не думаю, что это связано с событиями загрузки jQuery или DOM.

Я столкнулся с точно такими же проблемами при тестировании на iPod и iPad под управлением iOS 9. Я думал, что схожу с ума.

Я создал файл с именем test.js, который содержит следующее:

alert("test"); 

Обвязав как сценарий включает в нижней части моей страницы (непосредственно перед закрывающим тэгом тела) вводит значительную задержку перед файлом выполняется.

Помещение файла вверху не вызывает никаких проблем, так что это мое единственное решение в настоящее время.

Тестирование на различных устройствах и браузерах, отличных от iOS, не показывает эту проблему.

@ Скрипичный любой шанс, который вы можете проверить с помощью простого файла, такого как my вместо jQuery?

Редактировать: Я нашел популярный сайт, который включает в себя его JS внизу: getbootstrap.com.Я посещаю этот сайт на iPod или iPad, обновляю страницу пару раз, а загрузка страницы замерзает на 10-20 секунд до загрузки JS.