Как я могу улучшить свои сайты IE6 / 7 JS производительность? - PullRequest
3 голосов
/ 23 января 2010

Итак, я недавно участвовал в переписывании сайта, и мы начали с того, что во всех отношениях значительно улучшило предыдущее (нет, оно не идеальное, мы живем в установленные сроки и всегда улучшаемся: D) с одним исключением: в IE6 / 7 он заблокируется после показа страницы. Я знаю, что это JS, так как он отключен, он быстрый, и я знаю о некоторых вещах, таких как плагин simplegallery, который мы используем, очень медленный, но даже с этим и без рекламы Google он все еще находится в состоянии сканирования (+ 8сек). Я просмотрел профилировщик Firebug и внес множество изменений в JS / CSS, таких как:

  • Перемещение всех JS, кроме нашей обработки ошибок img, вниз страницы
  • Улучшение всех селекторов jQuery, указывающих на лучшую производительность
  • Переход на jQuery 1.4
  • запуск нашего основного пользовательского JS (main.js) через JS Lint
  • Спрайтинг часто используемых изображений
  • Снижение сложности CSS-селектора

Делать это было хорошо для всех браузеров, и я знаю, что могу сделать еще больше, но я не вижу значительного улучшения в IE6 / 7, которое мне нужно. Мы используем DD_roundies_0.0.2a.js для IE7, но не для IE6. Я попробовал DynaTrace, но не увидел ничего очевидного, хотя я немного растерялся в его глубине.

Пример страницы со списком

Пример страницы поиска

Может кто-нибудь увидеть, чего мне здесь не хватает, и / или указать на хорошие инструменты для профилирования IE?

Редактировать: я должен был упомянуть, что я прошел через YSlow, PageSpeed ​​и Chrome Developer Tool. Все это я основывал на большинстве улучшений, упомянутых выше. На данный момент я не говорю, что сайт полностью оптимизирован, но он в порядке и движется в правильном направлении. Однако у меня есть проблема в IE6 / 7, и я считаю, что это выполнение JS.

Редактировать 2: Мы уже отправили метатег Chrome Frame для IE6 с сервера. Это не решение, но я вижу, что оно приносит больше пользы, чем вреда для IE6. Я после специфической обратной связи JS на данный момент, так как я думаю, что я охватил все другие базы.

Ответы [ 6 ]

1 голос
/ 31 января 2010

Вы можете вручную профилировать свой скрипт "common.js" в IE6. Просто возьмите новую метку времени в стратегических местах и ​​предупредите их в конце.

например.

function ts() { return (new Date).getTime(); }
var t0 = ts();
// some of your code
var t1 = ts();
// rest of your code
var t2 = t();
alert(t1-t0); // milliseconds between t0 and t1
alert(t2-t0); // ms between t0 and t2

Возможно, одна часть сценария намного медленнее остальных.
Или, может быть, это просто IE6.

1 голос
/ 23 января 2010

Вы включаете jquery из http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js,, он будет загружаться быстрее, если вы разместите его на своем веб-сайте.

Также, ознакомьтесь с дополнением YSlow для Firebug, оно дает вам много информации о том, что вы можете сделать, чтобы улучшить время загрузки вашего сайта.

0 голосов
/ 30 августа 2010

Взгляните на LABjs & RequireJS: загрузка ресурсов JavaScript в увлекательной игровой форме , в которой рассказывается о том, как можно параллельно загружать скрипты.

До последнего поколения браузеры, тег имел некоторые действительно неблагоприятное выступление характеристики к нему. А именно, теги «блок», то есть они остановить все остальное, что загрузка / происходит на странице, в то время как они загружаются и пока они выполняются. Не только они останавливают все остальные части страница, они даже использовали, чтобы остановить загрузка любых других тегов.

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

Сам Javascript часто не является проблемой, когда вы модифицируете DOM, вы попадаете в неприятности, например, анимация, добавление и удаление элементов. Будьте особенно осторожны с непрозрачностью.

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

В настоящее время единственное, что казалось там подозрительным, это "omniture.js".

Вот блог, который я нашел относительно omniture.js и IE6 .

Вы можете использовать SpeedTracer в Chrome для устранения проблем со скоростью. Конечно, скорость js будет соответствовать двигателю V8.

0 голосов
/ 23 января 2010

Если вы хотите решительно заставить своих пользователей установить Google Chrome Frame, он заставит IE использовать Chrome Renderer и движок JavaScript

http://code.google.com/chrome/chromeframe/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...