Как заставить IE отображать содержимое страницы до завершения всего выполнения Javascript?

В среде разработки Ruby on Rails страница будет отображаться через 30 секунд в Firefox, но занимает 90 секунд в IE 8 (с режимом совместимости IE 7).

Дальнейшее расследование показывает, что именно Javascript замедлял работу страницы, потому что, если Javascript отключен, содержимое страницы также будет отображаться через 30 секунд.

Поскольку существует, вероятно, 7 или 8 подключаемых модулей jQuery, сценарии Facebook и сценарий Google Analytics, потребуется некоторое время, чтобы переместить весь код Javascript в конец файла HTML (что должно ускорить просмотр содержимого страницы, чтобы содержимое отображается через 30 секунд, как и Firefox), есть ли способ заставить IE отображать содержимое страницы до завершения выполнения всего кода Javascript?

Я думаю, что IE может ожидать завершения всего кода Javascript первым, потому что что, если есть операторы document.write(), которые должны быть в HTML... Firefox или Chrome не ждут этого, а сразу отображают содержимое.

(на рабочем сервере страница будет отображаться в Firefox через 5–7 секунд, потому что многие «частичные» (подкомпоненты HTML) кэшируются. IE 8 также занимает намного больше времени, около 40 секунд или около того. )

P.S. Веская причина, по которой Javascript встроен в HTML, может заключаться в том, что, скажем, если есть «Карусель изображений», тогда HTML-код находится в «частичном», который является сгенерированным файлом HTML. файлом HAML, и весь код HTML, а также код Javascript находятся в этом файле для лучшей инкапсуляции вместо того, чтобы иметь HTML в одном файле и Javascript в другом файле, но мне интересно, что, если все эти блоки кода Javascript только используйте jQuery $(document).ready(function() { ... }), тогда этот блок кода замедлит отображение страницы в IE?


person nonopolarity    schedule 20.07.2010    source источник


Ответы (2)


К сожалению, можно с уверенностью предположить, что все ваши плагины jQuery ждут полной загрузки dom в IE. Одно из решений — попытаться ускорить загрузку страницы. Вот несколько хороших способов сделать это:

  1. Не размещайте jQuery самостоятельно. Загрузите его из Google или Microsoft CDN. Это приведет к тому, что на одно соединение с вашим веб-сервером будет меньше.
  2. Динамическая загрузка контента через jQuery. Трудно перемонтировать материал постфактум, но это, безусловно, позволит вам постепенно загружать контент и создать впечатление, что страница загружается быстрее.
  3. Если возможно, поместите весь javascript внизу страницы.
  4. Удалите вызовы document.ready в jQuery, где это возможно.
  5. Ленивая загрузка изображений с помощью этого подключаемого модуля jQuery: http://www.appelsiini.net/2007/9/lazy-load-images-jquery-plugin Это уменьшит загрузку контента при первоначальном отображении страницы.
  6. Используйте сторонний CDN для размещенных скриптов и изображений или, по крайней мере, другой домен. Загрузка с одного и того же домена является узким местом
person Keith Adler    schedule 20.07.2010

Я бы также предложил то, что сказал Nissan Fan в пункте № 3, но с одной поправкой. Переместите все ненужные скрипты в нижнюю часть страницы, оставив в голове только jquery и, возможно, еще один скрипт.

Еще одна вещь, которую я бы предложил, — это изучить использование LAB.js, он заставляет браузеры обрабатывать JS, а также другие элементы страницы параллельно, что позволяет вам сократить время процесса загрузки.

http://labjs.com/

person Samuel Mburu    schedule 01.02.2011