О нас      Контакты      Оплата      Доставка      Кредит      Покупаем БУ      Техподдержка      Акции     
(499) 126-15-12
ICQ445899221   ICQ334778123
КЦ “Савеловский”
Павильон А5
Как добраться

Товаров: 0
Сумма: 0
Курс: $1=62.00руб.
  ВЕРНОСТЬ ТРАДИЦИЯМ

ТКЦ «САВЕЛОВСКИЙ»
   

Cloudflare, Mozilla и Facebook развивают BinaryAST для ускорения загрузки JavaScript

Cloudflare, Mozilla и Facebook развивают BinaryAST для ускорения загрузки JavaScript

BinaryAST выносит фазу синтаксического разбора на сторону сервера и поставляет уже сформированное абстрактное синтаксическое дерево (AST). Инженеры из компаний Cloudflare, Mozilla, Facebook и Bloomberg предложили новый формат BinaryAST для ускорения доставки и обработки JavaScript-кода при открытии сайтов в браузере. При получении BinaryAST браузер сразу может перейти на стадию компиляции, минуя парсинг исходного кода JavaScript.

Для парсинга используются компоненты Node.js, а код для оптимизации и формирования AST написан на языке Rust. Для тестирования подготовлена эталонная реализация, поставляемая под лицензий MIT. Кодировщик в BinaryAST может применяться как на уровне инструментария конечного сайта, так и для упаковки скриптов внешних сайтов на стороне прокси или сети доставки контента. На стороне браузера поддержка BinaryAST уже доступна в ночных сборках Firefox. В настоящее время уже начался процесс стандартизации BinaryAST рабочей группой ECMA TC39, после завершения которого формат сможет сосуществовать с существующими методами сжатия отдаваемого контента, такими как gzip и brotli.

С учётом того, что объём загружаемого JavaScript на многих популярных сайтах приближается к 10 Мб (например для LinkedIn — 7.2 Мб, Facebook — 7.1 Мб), первичная обработка JavaScript вносит существенную задержку. Значительное время при обработке JavaScript занимает фаза загрузки и синтаксического разбора кода. Стадия парсинга на стороне браузера также замедляется из-за невозможности полноценного построения AST на лету по мере загрузки кода (браузеру приходится ожидать завершения загрузки блоков, например конца функций, для получения недостающей для разбора текущих элементов информации).

На современных сайтах код обновляется достаточно часто, поэтому кэширование лишь частично решает проблему. Частично проблему пытаются решить через распространение кода в минимизированном и сжатом виде, а также при помощи кэширования браузером сгенерированного байткода. Выходом мог бы стать WebAssembly, но он требует использования явной типизации в коде и плохо подходит для ускорения обработки уже существующего кода на JavaScript.

Другим вариантом является доставка готового скомпилированного байткода вместо JavaScript-скриптов, но разработчики браузерных движков выступают против, так как сторонний байткод трудно верифицировать, его прямая обработка может привести к расслоению Web, возникают дополнительные угрозы безопасности и требуется разработка формата универсального байткода.

Размер данных в формате BinaryAST сопоставим со сжатым минифицированным JavaScript-кодом, а скорость обработки за счёт исключения фазы парсинга исходных текстов заметно увеличивается. BinaryAST позволяет вписаться в текущую модель разработки и доставки кода без создания нового формата байткода и без изменения языка JavaScript. Более того, парсинг на стороне сервера позволяет исключить из отдаваемого представления BinaryAST неиспользуемые функции и лишний код, на который при парсинге на стороне браузера тратится время, как на разбор, так и на передачу лишнего трафика. Также формат BinaryAST позволяет выполнять компиляцию в байткод по мере загрузки, не ожидая завершения получения всех данных.

Обратной стороной медали является появление новых векторов для атак, но по мнению разработчиков они значительное меньше и более контролируемы, чем при применении альтернатив, таких как распространение байткода. Особенностью BinaryAST также является возможность восстановления читаемого JavaScript — не один в один совпадающего с исходным вариантом, но семантически эквивалентного и включающего те же имена переменных и функций (BinaryAST сохраняет имена, но не сохраняет информацию о позициях в коде, форматировании и комментариях).

В движке SpiderMonkey время полного построения AST занимает 500–800 мс и применение BinaryAST позволило сократить этот показатель на 70–90%. Тесты кода facebook.com показали, что на разбор JavaScript тратится 10–15% ресурсов CPU и на парсинг уходит больше времени, чем на генерацию байткода и начальное формирование кода для JIT. При выполнении тестового JavaScript-набора, размером 1.2 Мб, применение BinaryAST позволило ускорить время начала запуска с 338 до 314 мс на настольной системе (Intel i7) и с 2019 до 1455 мс на мобильном устройстве (HTC One M8). В целом, для большинства web-феймвроков при применении BinaryAST время парсинга JavaScript сокращается на 3–10% в режиме без оптимизации и на 90–97% при включении режима игнорирования неиспользуемых функций.

Для парсинга используются компоненты Node.js, а код для оптимизации и формирования AST написан на языке Rust. Для тестирования подготовлена эталонная реализация, поставляемая под лицензий MIT. Кодировщик в BinaryAST может применяться как на уровне инструментария конечного сайта, так и для упаковки скриптов внешних сайтов на стороне прокси или сети доставки контента. На стороне браузера поддержка BinaryAST уже доступна в ночных сборках Firefox. В настоящее время уже начался процесс стандартизации BinaryAST рабочей группой ECMA TC39, после завершения которого формат сможет сосуществовать с существующими методами сжатия отдаваемого контента, такими как gzip и brotli.

BinaryAST выносит фазу синтаксического разбора на сторону сервера и поставляет уже сформированное абстрактное синтаксическое дерево (AST). Инженеры из компаний Cloudflare, Mozilla, Facebook и Bloomberg предложили новый формат BinaryAST для ускорения доставки и обработки JavaScript-кода при открытии сайтов в браузере. При получении BinaryAST браузер сразу может перейти на стадию компиляции, минуя парсинг исходного кода JavaScript.

С учётом того, что объём загружаемого JavaScript на многих популярных сайтах приближается к 10 Мб (например для LinkedIn — 7.2 Мб, Facebook — 7.1 Мб), первичная обработка JavaScript вносит существенную задержку. Значительное время при обработке JavaScript занимает фаза загрузки и синтаксического разбора кода. Стадия парсинга на стороне браузера также замедляется из-за невозможности полноценного построения AST на лету по мере загрузки кода (браузеру приходится ожидать завершения загрузки блоков, например конца функций, для получения недостающей для разбора текущих элементов информации).

Другим вариантом является доставка готового скомпилированного байткода вместо JavaScript-скриптов, но разработчики браузерных движков выступают против, так как сторонний байткод трудно верифицировать, его прямая обработка может привести к расслоению Web, возникают дополнительные угрозы безопасности и требуется разработка формата универсального байткода.

На современных сайтах код обновляется достаточно часто, поэтому кэширование лишь частично решает проблему. Частично проблему пытаются решить через распространение кода в минимизированном и сжатом виде, а также при помощи кэширования браузером сгенерированного байткода. Выходом мог бы стать WebAssembly, но он требует использования явной типизации в коде и плохо подходит для ускорения обработки уже существующего кода на JavaScript.

Обратной стороной медали является появление новых векторов для атак, но по мнению разработчиков они значительное меньше и более контролируемы, чем при применении альтернатив, таких как распространение байткода. Особенностью BinaryAST также является возможность восстановления читаемого JavaScript — не один в один совпадающего с исходным вариантом, но семантически эквивалентного и включающего те же имена переменных и функций (BinaryAST сохраняет имена, но не сохраняет информацию о позициях в коде, форматировании и комментариях).

Размер данных в формате BinaryAST сопоставим со сжатым минифицированным JavaScript-кодом, а скорость обработки за счёт исключения фазы парсинга исходных текстов заметно увеличивается. BinaryAST позволяет вписаться в текущую модель разработки и доставки кода без создания нового формата байткода и без изменения языка JavaScript. Более того, парсинг на стороне сервера позволяет исключить из отдаваемого представления BinaryAST неиспользуемые функции и лишний код, на который при парсинге на стороне браузера тратится время, как на разбор, так и на передачу лишнего трафика. Также формат BinaryAST позволяет выполнять компиляцию в байткод по мере загрузки, не ожидая завершения получения всех данных.

В движке SpiderMonkey время полного построения AST занимает 500–800 мс и применение BinaryAST позволило сократить этот показатель на 70–90%. Тесты кода facebook.com показали, что на разбор JavaScript тратится 10–15% ресурсов CPU и на парсинг уходит больше времени, чем на генерацию байткода и начальное формирование кода для JIT. При выполнении тестового JavaScript-набора, размером 1.2 Мб, применение BinaryAST позволило ускорить время начала запуска с 338 до 314 мс на настольной системе (Intel i7) и с 2019 до 1455 мс на мобильном устройстве (HTC One M8). В целом, для большинства web-феймвроков при применении BinaryAST время парсинга JavaScript сокращается на 3–10% в режиме без оптимизации и на 90–97% при включении режима игнорирования неиспользуемых функций.


Дата публикации: 17.05.2019


Ещё новости


  27.08.2022  Две карты SIM, экран 2K, четыре динамика и поддержка Widevine L1. Представлен планшет Chuwi HiPad Max

В основе устройства лежит SoC Snapdragon 680, то есть поддержки 5G тут нет. Новинка стоит 400 долларов, хотя первые пару дней после старта продаж её можно было купить всего за 200 долларов. Экран диаг...

  27.08.2022  Недоработка в Chrome, позволяющая изменять буфер обмена без действий пользователя

Если в Firefox, Safari и старых выпусках Chrome запись в буфер обмена допускалась только после явных действий пользователя, то в новых выпусках для записи достаточно просто открыть сайт. В недавних в...

  27.08.2022  Флагманы Samsung получат Android 13 и One UI 5.0 уже совсем скоро. Релиз финальной версии ПО ожидается в октябре

Первоначально обновление станет доступно для флагманских аппаратов линейки Galaxy S22.  Источник говорит, что релиз может состояться 17 либо 19 октября.   На данный момент One UI 5.0 доступна на неко...

  27.08.2022  Россияне стали меньше платить за смартфоны и ноутбуки. Снижение среднего чека связано с выгодными ценами и расширением ассортимент доступных моделей

Эти данные содержаться в исследовании аналитического ресурса «Чек Индекс»: эксперты сравнивали данные, собранные с 1 по 20 августа этого и прошлого годов. Средний чек россиян на покупку смартфонов ока...

  27.08.2022  Это стало полной неожиданностью. Марсоход Perseverance обнаружил на дне бывшего озера магматические породы

По словам Фарли, происхождение магматических пород Езеро остается загадкой, поскольку в кратере или рядом с ним нет явных вулканических образований. «Мы были очень рады найти магматические породы», — ...



Все новости
Оформление кредита
Наши программисты потрудилсь сделать так, что бы вы могли оформить кредит не вставая из за стола
Достаем Ноутбуки...
Ждем Ваши заказы...
   
© 2003—2024 Интернет-магазин ноутбуков a5savel.ru. Все права защищены.
Нелицензированное использование материалов данного сайта запрещено.
(499) 126-15-12 |