Как заставить IE показывать содержимое страницы перед завершением всего выполнения Javascript? - PullRequest
0 голосов
/ 21 июля 2010

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

Дальнейшие исследования показывают, что она должна быть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 секунд или около того.)

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

Я бы также предложил то, что сказал Ниссан Фан в пункте 3, но с одной поправкой.Перемещение всех ненужных сценариев вниз страницы, оставляя в голове только jquery и, возможно, еще один сценарий.

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

http://labjs.com/

0 голосов
/ 21 июля 2010

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