Случайная блокировка с помощью Javascript-файла? - PullRequest
2 голосов
/ 29 января 2011

Существует пример блокировки javascript от Стива Соудерса из его книги «Высокопроизводительные веб-сайты»: http://stevesouders.com/hpws/js-blocking.php

Javascripts больше не блокирует загрузки, но все равно блокирует рендеринг.

.. но есть странная активность загрузки:

Есть 5 параллельных загрузок (максимум 6 возможных в Firefox 3 или IE 8 с одного сервера / хоста)

  • 4 изображения (2 с хоста 1, 2 с хоста 2)
  • 1 Javascript между

есть также 5-е изображение на странице, но загрузка этого пятого изображения не происходитпараллельно, но только после завершения загрузки Javascript.

так почему же это изображение не загружается параллельно с другими компонентами?а остальные 4 изображения делают?

Если вы используете панель Firebug в сети, вы поймете, что я имею в виду!

Ответы [ 2 ]

1 голос
/ 29 января 2011

Представьте себе курсор, перемещающийся по документу HTML сверху вниз.На каждом элементе, на котором находится курсор, он разрешает элемент / изображение.Когда изображение встречается, загрузка изображения начинается, и курсор перемещается, изображение не нужно загружать для продолжения средства визуализации.

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

Таким образом, любой HTML-код (изображение или что-то другое), который появляется после того, как тег сценария удерживается.

Это то, что подразумевается под блокировкой JS и происходит, когда сценариивставляется с использованием обычного HTML.

Этого можно избежать, вставляя сценарии с использованием JavaScript, поскольку, хотя вы создаете элементы HTML и добавляете их в DOM, он не прерывает курсор рендеринга HTML, поскольку это совсем другой процесс.

0 голосов
/ 31 января 2011

не ответ, просто скриншот, чтобы проиллюстрировать вопрос: почему загрузка последнего изображения началась только после прекращения загрузки javascript?

screenshot of firebug

и здесьВозможный ответ: я поместил HTML-код примера на свой сервер (все изображения и javascript-коды все еще находятся на сервере souders), а затем посмотрел на firebug: теперь я вижу традиционное поведение блокировки:

enter image description here

загрузка первого javascript (util.js) блокирует загрузку всех следующих изображений, загрузка второго javascript (медленное включение) блокирует загрузку всех изображений после этого.

может быть, наличие html и скриптов на одном сервере - это особый случай, который по-разному трактуется браузерами.

...