Практические советы по повышению производительности HTML и JavaScript

58899abe97ba4d4392a272145b243dbb.PNG

Тема улучшения производительности сайтов и приложений всегда должна находиться на радаре у хорошего веб-разработчика. В одних случаях грамотная работа позволяет сэкономить вычислительные ресурсы, в других — сильно улучшить опыт работы с приложениями для всей аудитории пользователей, как это на днях случилось с Wikipedia. А часто и все сразу.

Скорость работы веб-приложений условно зависит от трех составляющих: 1) как устроена сетевая инфраструктура, через которую доставляются данные и код, 2) как работает браузер и 3) как, собственно говоря, написан ваш код, который браузер должен исполнять.

Все три компоненты постоянно улучшаются и оптимизируются. Например, в сетевом стеке определенные общие улучшения несет переход на HTTP 2.0. С точки зрения браузеров, все производители постоянно работают над улучшением своих движков. В случае Chakra в Microsoft Edge, помимо общего повышения производительности работы с JavaScript, мы добавляем поддержку специализированных средств вроде Asm.js и SIMD.js, призванных повысить эффективность кода в специфичных сценариях (в Firefox и Google Chrome — аналогично).

А вот что касается непосредственно кода веб-приложений, то тут зачастую нужно полагаться не только на обещанную скорость работы тех или иных движков, но и самостоятельно измерять и улучшать эффективность своих решений.

Наши коллеги Дорис Чен и Джон-Дэвид Далтон подготовили целый курс с практическими советами по улучшению производительности вашего кода на HTML и JavaScript. Вы можете посмотреть его на соответствующей странице в Microsoft Virtual Academy или под катом в виде отдельных роликов.

Веб-производительность 101

Основы веб-производительности, методология настройки производительности и основные блокеры, с которыми вам предстоит столкнуться при оптимизации сайтов и приложений.

Инструменты и измерения

Знакомство с инструментами, которые помогут отслеживать и измерять скорость работы JavaScript и HTML.

Стратегии и принципы: сетевые запросы и загружаемые данные

Подходы для реализации быстрых ответов на сетевые запросы и уменьшения объема загружаемых данных.

Стратегии и принципы: использование медиа-ресурсов

Советы по оптимизации медиа-контента и использованию преимуществ CSS3.

Стратегии и принципы: память, разметка и выполнение кода

Как управлять использованием памяти и строить эффективную структуру разметки и оптимизировать выполнение кода.

Написание быстрого JavaScript

Советы по написанию хорошего и быстрого JavaScript, включая инициализацию JS по запросу и эффективную работу с JSON, .innerHTML, числами, массивами и DOM-объектами.

Пример: настройка производительности казуальной игры

Разбор примера с казуальной игрой, в которой шаг за шагом с использованием стратегий и принципов предыдущих уроков улучшаются время запуска, отзывчивость UI, эффективность потребления памяти.

Куда писать пожелания?


Как и ранее, мы будем рады вашим отзывав и пожеланиях по улучшению работы нашего браузера. Запросы на новые возможности в области производительности можно оставлять на UserVoice, сообщать о багах следует на Microsoft Connect, а общие комментарии — в твиттере команды Edge.

© Habrahabr.ru