Я недавно начал работу в новой компании, и у них есть существующее приложение с 1000-ю строками кода Javascript. Базовый уровень содержит десятки JS-файлов с легкостью более 10 000 пользовательских строк кода, они также используют несколько сторонних библиотек, таких как JQuery, Livequery, JQTransform и другие. Одной из основных жалоб, которые они получали от пользователей, является медленность работы на стороне клиента на сайте. Мне поручено оптимизировать и улучшить производительность JS. Первым моим шагом будет, очевидно, переход к новейшей библиотеке JQuery и включение JSMin в процесс сборки. Помимо этого, мне интересно, есть ли у кого-нибудь советы о том, с чего начать оптимизацию на такой огромной базе кода?Оптимизация Javascript, с чего начать?
ответ
Вы можете попробовать установить DynaTrace Ajax Edition (free download here) и посмотреть, что вы скажете. Он поддерживает только IE8, я думаю, но это, вероятно, хорошее место для начала, как и все. На мой взгляд, у него гораздо более тщательный и понятный интерфейс профилировщика, чем у Firebug или Chrome.
Одна вещь, которая выпрыгивает на меня, - это «Livequery», которая, если не используется очень, может привести к гигантским проблемам с производительностью.
Помните: в кодовой базе, которая большая, развитая в течение долгого времени и, возможно, не самая современная технология Javascript, ваши настоящие проблемы будут неправильными алгоритмами в вашем собственном коде. Новые библиотеки и методы минимизации/оптимизации - хорошие идеи, но первое, что вам нужно сделать, - найти страницы, которые кажутся вялыми, а затем начать профилирование. По моему опыту, в большой старой кодовой базе, вы найдете что-то ужасное действительно быстро. Установите настольный гаджет, который отслеживает использование ЦП. Это отличный способ увидеть, когда код страницы заставляет браузер замедляться напрямую, а не только сетевое отставание. Любой большой всплеск использования процессора браузера в течение значительного времени должен быть большим красным флагом.
Спасибо, я попробую DynaTrace сегодня и посмотрю, как это происходит. –
Профиль этого кода. Не оптимизируйте что-то, если вы просто «почувствуете», что его можно оптимизировать. Помните правило 80% 20%. 80% времени тратится на 20% кода.
Используйте Google Closure tools. Они могут оптимизировать и сократить ваш JS-код, который, по крайней мере, заставит его быстрее загружать компьютеры вашего клиента.
Путь к найти узкие места. Если вы находите фактическое местоположение, где приложение работает медленно, вы можете использовать Firebug, чтобы прокомментировать ваш код и рассказать, сколько потрачено на каждую функцию и сколько раз они были вызваны. Из этой информации довольно легко определить, какие области нуждаются в улучшении.
Обычно узкие места в WebApplication являются:
- Работа с DOM экстенсивно (перерисовки, перекомпоновке)
- Тяжелая сеть связи (AJAX)
У вас есть долгий путь впереди вы спариваетесь, и я не завидую вам.
Вот некоторые Performance Optimization Techniques for Javascript, которые я записал после работы в той же роли, что и ваша.
Они разбиты на 5 широких категорий в порядке их разницы в производительности.
Однако, учитывая то, что вы сказали о кодовом, я думаю, что второй раздел Управления и активно сокращая зависимости является наиболее актуальной, в частности:
- Модификация коды для уменьшения библиотечных зависимостей и
- Использование менеджера пост-нагрузки зависимостей для библиотек и модулей
Однако все 25 методы перечислены они полезны для повышения производительности.
Я надеюсь, что вы найдете их полезными.
- 1. css, javascript - с чего начать?
- 2. Автоматизация модульного тестирования Javascript ... с чего начать?
- 3. Javascript injection Предотвращение: с чего начать?
- 4. SCIP _ С чего начать
- 5. nodejs с чего начать?
- 6. XSLT, с чего начать?
- 7. DBus, с чего начать
- 8. webdev: с чего начать?
- 9. С чего начать программирование?
- 10. Mean.js, с чего начать?
- 11. С чего начать Python
- 12. С чего начать весну?
- 13. С чего начать AlarmManager?
- 14. С чего начать WebRTC?
- 15. XNA С чего начать?
- 16. DB - С чего начать?
- 17. путаются с чего начать
- 18. Начало разработки: с чего начать?
- 19. Интерактивная книга - с чего начать
- 20. С чего начать с GKMinmaxStrategy?
- 21. С чего начать с секвенсера
- 22. С чего начать с C#
- 23. С чего начать с SQL?
- 24. С чего начать с C#?
- 25. С чего начать с Direct2d?
- 26. С чего начать с Magento?
- 27. С чего начать с сборки?
- 28. С чего начать с CruiseControl.NET
- 29. С чего начать с кибербезопасности
- 30. С чего начать с разработки веб-сервиса?
Является ли воспринимаемая медлительность при загрузке страницы или в пользовательских взаимодействиях после загрузки страницы? Является ли JS созданием большого количества HTML-клиентов? Много ли вызовов AJAX для всего, что делает пользователь? – Robusto
Мы провели много профилирования на уровне сервера/сети, и медлительность, похоже, ограничивается кодом Ajax/JQTransform, который запускает загрузку на странице. –