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

Дальнейшее расследование показывает, что замедление страницы должен быть 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?

0
nonopolarity 21 Июл 2010 в 01:52

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 для размещенных скриптов и изображений или, по крайней мере, другой домен. Загрузка того же домена - узкое место
0
Keith Adler 20 Июл 2010 в 22:03

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

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

http://labjs.com/

0
Samuel Mburu 1 Фев 2011 в 19:12