2010-01-23 7 views
3

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

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

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

A sample listing page

A sample search page

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

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

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

+1

вы должны использовать только XHTML, если ваш код проверяет; в настоящее время у вас есть 60+ ошибок в обоих документах; если кто-то фактически анализирует это как XHTML вместо суп-суп, все, что он получит, это сообщение об ошибке! – Christoph

ответ

1

Вы можете вручную профиль вашего «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

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

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

+1

Спасибо за ввод. Был через YSlow alot и скорость страницы (упоминается выше). Что касается jQuery, я предпочитаю, чтобы он был в Google, так как он скорее всего будет кэшироваться для пользователя. Также я не уверен, что скорость загрузки является проблемой, я думаю, что это больше JS-исполнения. –

+0

Использование http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.js (1.4.0 вместо 1.4) вместо этого будет немного быстрее, поскольку оно будет кэшироваться клиентами, но вы должны обновите URL-адрес для новых версий 1.4. *. – Kimble

+0

Спасибо, Kimble. Но как вы думаете, что не так с этим URL? Когда я проверил заголовок, это Cache-Control: public, must-revalidate, proxy-revalidate, max-age = 3600 и истекает через 12 дней. Я что-то пропустил? –

0

Если вы хотите быть радикальной силой ваших пользователей, чтобы установить рамку Google Chrome будет сделать IE использовать хромированную визуализатор и JavaScript двигателя

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

+2

Вся Chrome Frame не имеет абсолютно никакого смысла. Просто позвольте пользователям использовать Chrome (или любой другой приличный веб-браузер). – BalusC

+0

Chrome Frame определенно не является решением, поскольку Корпорты и отсталые ИТ-администраторы (не груб, но где IT-парень все еще хочет IE6, он должен быть идиотом или просто слишком ленив, не так ли?) Не позволит этого. Тем не менее, для небольшого числа, которое мы уже отправили, условно для IE6! –

+1

Извините, что это была 99% шутка. Я чувствую, что, хотя мой крупнейший клиент моих компаний не использует ничего, кроме IE6. Единственное, что вы можете сделать, это оптимизировать оптимизацию, поскольку механизм JavaScript JavaScript отличается слабой. Если вам нужно удалить дорогостоящие функции, сделайте это и скажите им, почему. Кроме того, используйте профилировщик хромов, чтобы рассказать вам, если какая-либо из ваших функций вызвана часто, что было лучшим для меня. – RHicke

0

В настоящее время подозрительным является только «omniture.js».

Это сообщение в блоге, которое я нашел относительно omniture.js and IE6.

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

0

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

0

Посмотрите на LABjs & RequireJS: Loading JavaScript Resources the Fun Way, в котором рассказывается о том, как вы можете загружать скрипты параллельно.

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

Смежные вопросы