Цлоудфларе, Мозилла и Фацебоок развијају БинариАСТ да убрзају учитавање ЈаваСцрипт-а

Инжењери из Цлоудфларе, Мозилла, Фацебоок и Блоомберг понудио нови формат БинариАСТ да бисте убрзали испоруку и обраду ЈаваСцрипт кода приликом отварања сајтова у претраживачу. БинариАСТ помера фазу рашчлањивања на страну сервера и испоручује већ генерисано стабло апстрактне синтаксе (АСТ). Након што прими БинариАСТ, претраживач може одмах да пређе на фазу компилације, заобилазећи рашчлањивање ЈаваСцрипт изворног кода.

За тестирање припремљен референтна имплементација која се испоручује под лиценцом МИТ-а. Компоненте Ноде.јс се користе за рашчлањивање, а код за оптимизацију и АСТ генерисање је написан у Русту. Подршка на страни претраживача
БинариАСТ је већ доступан у ноћна скупштина Фирефок. Кодер у БинариАСТ-у може да се користи и на нивоу алата крајњег сајта и за паковање скрипти спољних сајтова на страни проксија или мреже за испоруку садржаја. Тренутно је већ започео процес стандардизације БинариАСТ-а од стране радне групе ЕЦМА ТЦ39, након чега ће формат моћи да коегзистира са постојећим методама компресије садржаја, као што су гзип и бротли.

Цлоудфларе, Мозилла и Фацебоок развијају БинариАСТ да убрзају учитавање ЈаваСцрипт-а

Цлоудфларе, Мозилла и Фацебоок развијају БинариАСТ да убрзају учитавање ЈаваСцрипт-а

Приликом обраде ЈаваСцрипт-а, значајна количина времена се троши у фази учитавања и рашчлањивања кода. С обзиром да је обим преузетог ЈаваСцрипт-а на многим популарним сајтовима близу 10 МБ (на пример, за ЛинкедИн – 7.2 МБ, Фацебоок – 7.1 МБ, Гмаил – 3.9 МБ), почетна обрада ЈаваСцрипт-а уводи значајно кашњење. Фаза рашчлањивања на страни претраживача је такође успорена због немогућности да се у потпуности изгради АСТ у ходу док се код учитава (прегледач мора да чека да се блокови кода доврше учитавање, као што је крај функција, да би добио информације које недостају за рашчлањивање тренутних елемената).

Они покушавају да делимично реше проблем дистрибуцијом кода у минимизираном и компримованом облику, као и кеширањем генерисаног бајткода од стране претраживача. На савременим сајтовима, код се ажурира прилично често, тако да кеширање само делимично решава проблем. ВебАссембли би могао бити решење, али захтева експлицитно куцање кода и није погодан за убрзавање обраде постојећег ЈаваСцрипт кода.

Друга опција је да се испоручи готов компајлирани бајткод уместо ЈаваСцрипт скрипти, али програмери претраживача се противе томе јер је бајт код треће стране тешко проверити, његова директна обрада може довести до раслојавања веба, додатних безбедносних ризика и развоја потребан је универзални формат бајткода.

БинариАСТ вам омогућава да се уклопите у ваш тренутни модел развоја и испоруке кода без креирања новог бајт кода или промене ЈаваСцрипт језика. Величина података у формату БинариАСТ је упоредива са компресованим минимизираним ЈаваСцрипт кодом, а брзина обраде елиминацијом фазе рашчлањивања изворног текста приметно се повећава. Поред тога, формат омогућава компилацију у бајт код док се БинариАСТ учитава, без чекања да се сви подаци заврше. Поред тога, рашчлањивање на страни сервера омогућава вам да искључите неискоришћене функције и непотребан код из враћене БинариАСТ репрезентације, која, када се анализира на страни претраживача, губи време и на рашчлањивање и на преношење непотребног саобраћаја.

Карактеристика БинариАСТ-а је такође могућност враћања читљивог ЈаваСцрипт-а који није потпуно исти као оригинална верзија, али је семантички еквивалентан и укључује иста имена променљивих и функција (БинариАСТ чува имена, али не чува информације о позицијама у код, форматирање и коментари). Друга страна медаље је појава нових вектора напада, али према речима програмера, они су много мањи и подложнији контроли него када се користе алтернативе, као што је дистрибуција бајткода.

Тестови фацебоок.цом кода су показали да рашчлањивање ЈаваСцрипт-а троши 10-15% ЦПУ ресурса и да је за рашчлањивање потребно више времена од генерисања бајткода и почетног генерисања кода за ЈИТ. У СпидерМонкеи мотору, време за потпуну изградњу АСТ траје 500-800 мс, а употреба БинариАСТ-а је смањила ову цифру за 70-90%.
Генерално, за већину веб ватромета, када се користи БинариАСТ, време рашчлањивања ЈаваСцрипт-а се смањује за 3-10% у режиму без оптимизације и за 90-97% када је омогућен режим игнорисања некоришћених функција.
Приликом покретања скупа за ЈаваСцрипт од 1.2 МБ, коришћење БинариАСТ-а је омогућило да се време покретања убрза са 338 на 314 мс на десктоп систему (Интел и7) и са 2019 на 1455 мс на мобилном уређају (ХТЦ Оне М8).

Извор: опеннет.ру

Додај коментар