BinaryAST: проект на Cloudflare, Mozilla и Facebook за ускоряване на зареждането на JavaScript

двоично-аст

Лос инженери от Cloudflare, Mozilla, Facebook и Bloomberg започнаха да работят по нов проект, наречен „Двоичен AST" за ускоряване на доставката и обработката на JavaScript кода при отваряне на сайтове в уеб браузъри.

BinaryAST отвежда фазата на синтактичен анализ на страната на сървъра и доставя вече генерирано абстрактно синтаксисно дърво (AST). След получаване на BinaryAST браузърът може веднага да премине към етапа на компилация, без да преминава през анализ на изходния код на JavaScript.

Референтна реализация, изготвена по лицензите на MIT, е подготвена за тестване. Компонентите Node.js се използват за анализ на кода за оптимизиране и генериране на AST, пише в Rust.

Кодерът в BinaryAST може да се използва както на ниво инструментариум на крайния сайт, така и за опаковане на скриптове за външни сайтове на прокси страната или мрежата за доставка на съдържание.

В момента процесът на стандартизация BinaryAST от работната група на ECMA TC39 вече започна, след което форматът ще може да съществува съвместно със съществуващите методи за компресиране на доставеното съдържание, като gzip и brotli.

Толкова много javascript файлове влияят върху зареждането на уеб страници

Значително време по време на обработката на JavaScript отнема фазата на зареждане и анализиране на кода.

Като се има предвид факта, че обемът на JavaScript се зарежда на много популярни сайтове приближава 10 MB (например за LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), процеса JavaScript първоначален въвежда значително забавяне.

Етапът на анализ от страна на браузъра също се забавя поради невъзможността да се създаде AST в движение, докато кодът се зарежда (браузърът трябва да изчака зареждането на кодови блокове, например края на функциите, за да получи липсващата информация за синтактичен анализ на текущите елементи).

Частично те се опитват да разрешат проблема чрез разпространение на кода в минимизирана и компресирана форма, както и чрез кеширане, генерирано от браузъра.

Двоичен-ast-1

Докато на съвременните сайтове кодът се актуализира доста често, така че кеширането само частично решава проблема.

Решението може да бъде WebAssembly, но изисква изрично използване на писане в кода и не е подходящ за ускоряване на обработката на съществуващ JavaScript код.

Друга възможност е да се достави готов компилиран код вместо JavaScript скриптове, но разработчиците на браузърен двигател се противопоставят на него, тъй като кодът на трета страна е труден за проверка, директната му обработка може да доведе до отделяне от мрежата. Възникват допълнителни заплахи за сигурността .

BinaryAST е решението

BinaryAST позволява интегриране в настоящия модел на развитие и доставка на код, без да се създава нов байт код и без промяна на езика на JavaScript.

Размерът на данните във формат BinaryAST е сравним с умален код на JavaScript и компресиран и скоростта на обработка, поради изключването на фазата на анализа на източника, значително се увеличава.

Също така, форматът позволява компилиране в байт код при зареждане на BinaryAST, без да чака изчерпване на всички данни.

Характеристика на BinaryAST е също и възможността за възстановяване на четлив JavaScript, не едно към едно, което съответства на оригиналната версия, но е семантично еквивалентно и включва същите имена на променливи и функции (BinaryAST запазва имената, но не запазва информация за позицията в кода, форматирането и коментарите).

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

Тестването на facebook кода показа 10-15% от ресурсите на процесора те се харчат за синтактичен анализ на JavaScript и отнема повече време за анализиране, отколкото за генериране на байт код и генериране на първоначален код за JIT.

Подкрепата на BinaryAST вече се предлага във Nightly версиите на Firefox.

Fuente: https://blog.cloudflare.com


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.