{"id":33901,"date":"2019-10-31T21:55:19","date_gmt":"2019-10-31T18:55:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript\/"},"modified":"2019-10-31T21:55:19","modified_gmt":"2019-10-31T18:55:19","slug":"cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","title":{"rendered":"Cloudflare, Mozilla \u0219i Facebook dezvolt\u0103 BinaryAST pentru a accelera \u00eenc\u0103rcarea JavaScript-ului.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Inginerii de la companiile Cloudflare, Mozilla, Facebook \u0219i Bloomberg <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/binary-ast\/\">au propus<\/a><\/noindex> un nou format <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tc39\/proposal-binary-ast\">BinaryAST<\/a><\/noindex>  pentru a accelera livrarea \u0219i procesarea codului JavaScript atunci c\u00e2nd se deschid site-uri \u00een browser. BinaryAST externalizeaz\u0103 faza de analiz\u0103 sintactic\u0103 pe server \u0219i furnizeaz\u0103 deja un arbore sintactic abstract format (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5_%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">AST<\/a><\/noindex>). La primirea BinaryAST, browserul poate trece imediat la etapa de compilare, s\u0103rind peste analiza codului surs\u0103 JavaScript. <\/p>\n<p>Pentru testare <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/binast\/binjs-ref\">a fost preg\u0103tit\u0103<\/a><\/noindex> o implementare de referin\u021b\u0103, furnizat\u0103 sub licen\u021ba MIT. Pentru analiz\u0103 se folosesc componente Node.js, iar codul pentru optimizarea \u0219i formarea AST este scris \u00een limbajul Rust. Pe partea browserelor, suportul<br \/>\nBinaryAST este deja disponibil \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/#nightly\">construc\u021bii nocturne<\/a><\/noindex> Firefox. Codificatorul din BinaryAST poate fi aplicat at\u00e2t la nivelul instrumentarului site-ului final, c\u00e2t \u0219i pentru ambalarea scripturilor site-urilor externe de partea unui proxy sau a unei re\u021bele de livrare a con\u021binutului. \u00cen prezent, a \u00eenceput deja procesul de standardizare a BinaryAST de c\u0103tre grupul de lucru <noindex><a rel=\"nofollow\" href=\"https:\/\/tc39.github.io\/\">ECMA TC39<\/a><\/noindex>, dup\u0103 finalizarea c\u0103ruia formatul va putea coexista al\u0103turi de metodele existente de comprimare a con\u021binutului livrat, cum ar fi gzip \u0219i brotli. <\/p>\n<p><center><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/content\/images\/2019\/05\/without-binAST.png\"><img decoding=\"async\" alt=\"Cloudflare, Mozilla \u0219i Facebook dezvolt\u0103 BinaryAST pentru a accelera \u00eenc\u0103rcarea JavaScript-ului.\" src=\"\/wp-content\/uploads\/2019\/05\/fdb78c6b073295f42c6ed83e0ba73dd1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><br \/>\n<center><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/content\/images\/2019\/05\/With-BinAST.png\"><img decoding=\"async\" alt=\"Cloudflare, Mozilla \u0219i Facebook dezvolt\u0103 BinaryAST pentru a accelera \u00eenc\u0103rcarea JavaScript-ului.\" src=\"\/wp-content\/uploads\/2019\/05\/457e5f127c81b8708cdc04ba0176a636.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Un timp semnificativ \u00een procesarea JavaScript este consumat de faza de \u00eenc\u0103rcare \u0219i analiz\u0103 a codului. Av\u00e2nd \u00een vedere c\u0103 volumul de JavaScript \u00eenc\u0103rcat pe multe site-uri populare se apropie de 10 MB (de exemplu, pentru LinkedIn \u2014 7,2 MB, Facebook \u2014 7,1 MB, Gmail \u2014 3,9 MB), procesarea ini\u021bial\u0103 a JavaScript provoac\u0103 \u00eent\u00e2rzieri considerabile. Faza de analiz\u0103 pe partea browser-ului este, de asemenea, \u00eencetinit\u0103 din cauza imposibilit\u0103\u021bii de a construi complet AST (Abstract Syntax Tree) \u00een timp real, \u00een timpul \u00eenc\u0103rc\u0103rii codului (browser-ul trebuie s\u0103 a\u0219tepte finalizarea \u00eenc\u0103rc\u0103rii blocurilor de cod, cum ar fi \u00eencheierea func\u021biilor, pentru a ob\u021bine informa\u021biile lips\u0103 necesare analizei elementelor curente).<\/p>\n<p>Par\u021bial, problema este abordat\u0103 prin distribuirea codului \u00eentr-o form\u0103 minimizat\u0103 \u0219i comprimat\u0103, precum \u0219i prin stocarea \u00een cache de c\u0103tre browser a codului byte generat. Pe site-urile moderne, codul este actualizat destul de frecvent, astfel \u00eenc\u00e2t stocarea \u00een cache rezolv\u0103 doar par\u021bial problema. O solu\u021bie ar putea fi WebAssembly, dar necesit\u0103 utilizarea tipiz\u0103rii explicite \u00een cod \u0219i nu este potrivit pentru accelerarea proces\u0103rii codului existent pe JavaScript. <\/p>\n<p>O alt\u0103 op\u021biune este livrarea codului byte compilat gata, \u00een loc de scripturi JavaScript, \u00eens\u0103 dezvoltatorii motoarelor de browser se opun, deoarece bytecode-ul ter\u021b este greu de verificat, procesarea sa direct\u0103 poate duce la fragmentarea web-ului, apar amenin\u021b\u0103ri suplimentare la adresa securit\u0103\u021bii \u0219i este necesar\u0103 dezvoltarea unui format de bytecode universal.<\/p>\n<p>BinaryAST se integreaz\u0103 \u00een modelul actual de dezvoltare \u0219i livrare a codului f\u0103r\u0103 a crea un nou bytecode \u0219i f\u0103r\u0103 a modifica limbajul JavaScript. Dimensiunea datelor \u00een format BinaryAST este comparabil\u0103 cu JavaScript-ul comprimat \u0219i minificat, iar viteza de procesare cre\u0219te semnificativ datorit\u0103 excluderii etapei de analiz\u0103 a textelor surs\u0103. \u00cen plus, formatul permite compilarea \u00een bytecode pe m\u0103sur\u0103 ce se \u00eencarc\u0103 BinaryAST, f\u0103r\u0103 a a\u0219tepta finalizarea primirii tuturor datelor. De asemenea, analiza pe partea serverului permite excluderea din reprezentarea livrat\u0103 a func\u021biilor neutilizate \u0219i a codului inutil, pentru care analiza pe partea browserului consum\u0103 timp at\u00e2t pentru analiz\u0103, c\u00e2t \u0219i pentru transmiterea unui trafic suplimentar.<\/p>\n<p>O caracteristic\u0103 a BinaryAST este \u0219i posibilitatea de a restaura JavaScript-ul lizibil care nu coincide 1:1 cu varianta original\u0103, ci este echivalent semnatic \u0219i include acelea\u0219i nume de variabile \u0219i func\u021bii (BinaryAST p\u0103streaz\u0103 numele, dar nu p\u0103streaz\u0103 informa\u021biile despre pozi\u021biile \u00een cod, formatarea \u0219i comentariile). Latura negativ\u0103 a medaliei este apari\u021bia de noi vectori pentru atacuri, dar, conform dezvoltatorilor, ace\u0219tia sunt semnificativ mai redu\u0219i \u0219i mai controla\u021bi dec\u00e2t \u00een cazul utiliz\u0103rii alternativelor, cum ar fi distribu\u021bia bytecode-ului.<\/p>\n<p>Testele de cod facebook.com au ar\u0103tat c\u0103 pentru analiza JavaScript se consum\u0103 10-15% din resursele CPU \u0219i c\u0103 analiza dureaz\u0103 mai mult dec\u00e2t generarea bytecode-ului \u0219i formarea ini\u021bial\u0103 a codului pentru JIT. \u00cen motorul SpiderMonkey, timpul necesar pentru construirea complet\u0103 a AST este de 500-800 ms, iar utilizarea BinaryAST a permis reducerea acestui timp cu 70-90%.<br \/>\n\u00cen general, pentru majoritatea framework-urilor web, utilizarea BinaryAST reduce timpul de analiz\u0103 JavaScript cu 3-10% \u00een modul f\u0103r\u0103 optimizare \u0219i cu 90-97% atunci c\u00e2nd se activeaz\u0103 modul de ignorare a func\u021biilor neutilizate.<br \/>\n\u00cen timpul test\u0103rii unui set JavaScript de 1,2 MB, utilizarea BinaryAST a permis reducerea timpului de pornire de la 338 la 314 ms pe un sistem desktop (Intel i7) \u0219i de la 2019 la 1455 ms pe un dispozitiv mobil (HTC One M8).<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Sursa: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=50701\">opennet.ro<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 Cloudflare, Mozilla, Facebook \u0438 Bloomberg \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 BinaryAST \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 JavaScript \u043a\u043e\u0434\u0430 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. BinaryAST \u0432\u044b\u043d\u043e\u0441\u0438\u0442 \u0444\u0430\u0437\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0436\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e (AST). \u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 BinaryAST \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u0440\u0430\u0437\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043c\u0438\u043d\u0443\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 JavaScript. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25564,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-33901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 Cloudflare, Mozilla, Facebook \u0438 Bloomberg \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Cloudflare, Mozilla \u0438 Facebook \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 BinaryAST \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 JavaScript | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 Cloudflare, Mozilla, Facebook \u0438 Bloomberg \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Cloudflare, Mozilla \u0219i Facebook dezvolt\u0103 BinaryAST pentru accelerarea \u00eenc\u0103rc\u0103rii JavaScript | ProHoster","description":"Inginerii de la companiile Cloudflare, Mozilla, Facebook \u0219i Bloomberg au propus un nou format","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Cloudflare, Mozilla \u0438 Facebook \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 BinaryAST \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 JavaScript | ProHoster","og:description":"\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 Cloudflare, Mozilla, Facebook \u0438 Bloomberg \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:19+00:00","article:modified_time":"2019-10-31T18:55:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33901","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:09:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:22","updated":"2026-01-21 17:09:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/33901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=33901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/33901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/25564"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=33901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=33901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=33901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}