{"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\/pt\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","title":{"rendered":"Cloudflare, Mozilla e Facebook desenvolvem BinaryAST para acelerar o carregamento de JavaScript","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Engenheiros das empresas Cloudflare, Mozilla, Facebook e Bloomberg <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/binary-ast\/\">propuseram<\/a><\/noindex> um novo formato <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tc39\/proposal-binary-ast\">BinaryAST<\/a><\/noindex>  para acelerar a entrega e o processamento de c\u00f3digo JavaScript ao abrir sites no navegador. O BinaryAST transfere a fase de an\u00e1lise sint\u00e1tica para o servidor e entrega uma \u00e1rvore sint\u00e1tica abstrata j\u00e1 formada (<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>). Ao receber o BinaryAST, o navegador pode imediatamente passar para a fase de compila\u00e7\u00e3o, pulando a an\u00e1lise do c\u00f3digo fonte JavaScript. <\/p>\n<p>Para testes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/binast\/binjs-ref\">preparada<\/a><\/noindex> uma implementa\u00e7\u00e3o de refer\u00eancia, disponibilizada sob a licen\u00e7a MIT. Para a an\u00e1lise, s\u00e3o utilizados componentes do Node.js, e o c\u00f3digo para otimiza\u00e7\u00e3o e gera\u00e7\u00e3o de AST \u00e9 escrito na linguagem Rust. Do lado dos navegadores, o suporte ao<br \/>\nBinaryAST j\u00e1 est\u00e1 dispon\u00edvel em <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/#nightly\">builds noturnas<\/a><\/noindex> do Firefox. O codificador do BinaryAST pode ser aplicado tanto no n\u00edvel das ferramentas do site final quanto para empacotar scripts de sites externos do lado do proxy ou da rede de entrega de conte\u00fado. Atualmente, o processo de padroniza\u00e7\u00e3o do BinaryAST j\u00e1 foi iniciado pelo grupo de trabalho <noindex><a rel=\"nofollow\" href=\"https:\/\/tc39.github.io\/\">ECMA TC39<\/a><\/noindex>, ap\u00f3s a conclus\u00e3o do qual o formato poder\u00e1 coexistir com os m\u00e9todos existentes de compress\u00e3o de conte\u00fado entregues, como gzip e 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 e Facebook desenvolvem BinaryAST para acelerar o carregamento de JavaScript\" 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 e Facebook desenvolvem BinaryAST para acelerar o carregamento de JavaScript\" src=\"\/wp-content\/uploads\/2019\/05\/457e5f127c81b8708cdc04ba0176a636.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Um tempo significativo no processamento de JavaScript \u00e9 consumido pela fase de carregamento e an\u00e1lise do c\u00f3digo. Considerando que o volume de JavaScript carregado em muitos sites populares se aproxima de 10 MB (por exemplo, para o LinkedIn \u2014 7,2 MB, Facebook \u2014 7,1 MB, Gmail \u2014 3,9 MB), o processamento inicial de JavaScript causa um atraso consider\u00e1vel. A fase de an\u00e1lise no lado do navegador tamb\u00e9m \u00e9 retardada devido \u00e0 impossibilidade de constru\u00e7\u00e3o completa do AST em tempo real, \u00e0 medida que o c\u00f3digo \u00e9 carregado (o navegador precisa aguardar a conclus\u00e3o do carregamento dos blocos de c\u00f3digo, como o final das fun\u00e7\u00f5es, para obter as informa\u00e7\u00f5es faltantes necess\u00e1rias para a an\u00e1lise dos elementos atuais).<\/p>\n<p>Parcialmente, o problema tenta ser resolvido pela dissemina\u00e7\u00e3o do c\u00f3digo em formato minimizado e compactado, bem como pelo cache do bytecode gerado pelo navegador. Em sites modernos, o c\u00f3digo \u00e9 atualizado com bastante frequ\u00eancia, por isso o cache apenas resolve parcialmente o problema. Uma sa\u00edda poderia ser o WebAssembly, mas ele exige o uso de tipagem expl\u00edcita no c\u00f3digo e n\u00e3o se adequa bem para acelerar o processamento de c\u00f3digo JavaScript j\u00e1 existente. <\/p>\n<p>Outra op\u00e7\u00e3o \u00e9 entregar bytecode compilado em vez de scripts JavaScript, mas os desenvolvedores de motores de navegador se op\u00f5em, pois o bytecode de terceiros \u00e9 dif\u00edcil de verificar, seu processamento direto pode levar \u00e0 fragmenta\u00e7\u00e3o da Web, surgem amea\u00e7as adicionais \u00e0 seguran\u00e7a e \u00e9 necess\u00e1rio desenvolver um formato de bytecode universal.<\/p>\n<p>BinaryAST permite se encaixar no modelo atual de desenvolvimento e entrega de c\u00f3digo sem criar um novo bytecode e sem modificar a linguagem JavaScript. O tamanho dos dados no formato BinaryAST \u00e9 compar\u00e1vel ao JavaScript comprimido e minificado, e a velocidade de processamento aumenta consideravelmente com a exclus\u00e3o da fase de parsing de textos fonte. Al\u00e9m disso, o formato permite a compila\u00e7\u00e3o em bytecode \u00e0 medida que o BinaryAST \u00e9 carregado, sem esperar pela conclus\u00e3o do recebimento de todos os dados. A an\u00e1lise do lado do servidor tamb\u00e9m permite excluir fun\u00e7\u00f5es n\u00e3o utilizadas e c\u00f3digo desnecess\u00e1rio na representa\u00e7\u00e3o fornecida do BinaryAST, economizando tempo tanto na an\u00e1lise quanto na transfer\u00eancia de tr\u00e1fego desnecess\u00e1rio.<\/p>\n<p>Uma caracter\u00edstica do BinaryAST \u00e9 a capacidade de restaurar JavaScript leg\u00edvel que n\u00e3o \u00e9 id\u00eantico ao original, mas semanticamente equivalente e inclui os mesmos nomes de vari\u00e1veis e fun\u00e7\u00f5es (o BinaryAST mant\u00e9m os nomes, mas n\u00e3o preserva informa\u00e7\u00f5es sobre posi\u00e7\u00f5es no c\u00f3digo, formata\u00e7\u00e3o e coment\u00e1rios). O lado negativo \u00e9 o surgimento de novos vetores de ataque, mas de acordo com os desenvolvedores, eles s\u00e3o significativamente menores e mais control\u00e1veis do que ao aplicar alternativas, como a distribui\u00e7\u00e3o de bytecode.<\/p>\n<p>Os testes de c\u00f3digo do facebook.com mostraram que 10-15% dos recursos da CPU s\u00e3o gastos na an\u00e1lise do JavaScript, e a an\u00e1lise consome mais tempo do que a gera\u00e7\u00e3o de bytecode e a forma\u00e7\u00e3o inicial de c\u00f3digo para JIT. No mecanismo SpiderMonkey, o tempo total para construir o AST leva de 500 a 800 ms, e a aplica\u00e7\u00e3o do BinaryAST permitiu reduzir esse tempo em 70-90%.<br \/>\nNo geral, para a maioria dos frameworks web, o uso do BinaryAST reduz o tempo de an\u00e1lise do JavaScript em 3-10% no modo sem otimiza\u00e7\u00e3o e em 90-97% ao ativar o modo de ignorar fun\u00e7\u00f5es n\u00e3o usadas.<br \/>\nAo executar um conjunto de testes JavaScript de 1,2 MB, a aplica\u00e7\u00e3o do BinaryAST permitiu reduzir o tempo de inicializa\u00e7\u00e3o de 338 ms para 314 ms em um sistema de desktop (Intel i7) e de 2019 ms para 1455 ms em um dispositivo m\u00f3vel (HTC One M8).<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Fonte: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=50701\">opennet.ru<\/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.3 - 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\/pt\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 e Facebook desenvolvem o BinaryAST para acelerar o carregamento do JavaScript | ProHoster","description":"Engenheiros das empresas Cloudflare, Mozilla, Facebook e Bloomberg propuseram um novo formato","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/33901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=33901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/33901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/25564"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=33901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=33901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=33901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}