{"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\/no\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","title":{"rendered":"Cloudflare, Mozilla og Facebook utvikler BinaryAST for \u00e5 akselerere lasting av JavaScript","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ingeni\u00f8rar fr\u00e5 selskapa Cloudflare, Mozilla, Facebook og Bloomberg <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/binary-ast\/\">ble bedt om<\/a><\/noindex> nytt format <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tc39\/proposal-binary-ast\">BinaryAST<\/a><\/noindex>  for \u00e5 akselerere levering og behandling av JavaScript-kode ved opning av nettsider i nettlesaren. BinaryAST flyttar syntakanalyse- fase til serveren og leverer eit ferdig samansett abstrakt syntaks-tre (<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>). Ved mottaking av BinaryAST kan nettlesaren straks g\u00e5 vidare til kompilering, utan \u00e5 m\u00e5tte parse JavaScript-koden. <\/p>\n<p>For testing <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/binast\/binjs-ref\">er den f\u00f8rste utgaven av Endeavour OS klar<\/a><\/noindex> referanseimplementasjonen, levert under MIT-lisens. For parsing bruker ein komponentar fr\u00e5 Node.js, medan koden for optimalisering og dannelse av AST er skriven p\u00e5 Rust. P\u00e5 nettlesarsida er st\u00f8tta<br \/>\nBinaryAST allereie tilgjengeleg i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/#nightly\">nattbyggingene<\/a><\/noindex> Firefox. Kodaren i BinaryAST kan brukast b\u00e5de p\u00e5 niv\u00e5et av slutterverkt\u00f8yet til den enkelte nettsida, og for pakking av skript fr\u00e5 eksterne nettsider p\u00e5 proxiesida eller innhaldleveringsnett. Prosessen med \u00e5 standardisere BinaryAST er allereie starta av arbeidsgruppa <noindex><a rel=\"nofollow\" href=\"https:\/\/tc39.github.io\/\">ECMA TC39<\/a><\/noindex>, etter at denne prosessen er avslutta kan formatet sameksistere med eksisterande metoder for komprimering av leverandert innhald, som gzip og 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 og Facebook utvikler BinaryAST for \u00e5 akselerere lasting av 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 og Facebook utvikler BinaryAST for \u00e5 akselerere lasting av JavaScript\" src=\"\/wp-content\/uploads\/2019\/05\/457e5f127c81b8708cdc04ba0176a636.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Betydelig tid under behandling av JavaScript brukes til \u00e5 laste og analysere koden. Gitt at volumet av lastet JavaScript p\u00e5 mange popul\u00e6re nettsteder n\u00e6rmer seg 10 MB (for eksempel LinkedIn \u2014 7,2 MB, Facebook \u2014 7,1 MB, Gmail \u2014 3,9 MB), bidrar den f\u00f8rste behandlingen av JavaScript til betydelige forsinkelser. Parsingsfasen p\u00e5 klientsiden forsinkes ogs\u00e5 p\u00e5 grunn av umuligheten av \u00e5 bygge en komplett AST i sanntid, ettersom koden lastes inn (nettleseren m\u00e5 vente p\u00e5 \u00e5 f\u00e5 lastet ferdig kodeblokker, som for eksempel slutten av funksjoner, for \u00e5 f\u00e5 den manglende informasjonen som er n\u00f8dvendig for \u00e5 analysere de n\u00e5v\u00e6rende elementene).<\/p>\n<p>Ein pr\u00f8ver delvis \u00e5 l\u00f8yse problemet ved \u00e5 distribuere koden i minimalisert og komprimert form, samt ved hjelp av nettlesark caching av generert bytekode. P\u00e5 moderne nettsider blir koden oppdatert ganske ofte, s\u00e5 caching l\u00f8yser berre delvis problemet. Ein mogleg l\u00f8ysing kunne vore WebAssembly, men dette krever bruk av eksplisitt type i koden og passar d\u00e5rleg for \u00e5 akselerere behandlingen av eksisterande JavaScript-kode. <\/p>\n<p>Et annet alternativ er \u00e5 levere den ferdig kompilert bytekoden i stedet for JavaScript-skript, men utviklerne av nettlesermotorene er imot dette, fordi tredjeparts bytekode er vanskelig \u00e5 verifisere, direkte behandling kan f\u00f8re til oppdeling av Web, og det oppst\u00e5r ekstra sikkerhetstrusler samt behov for utvikling av et universelt bytekodeformat.<\/p>\n<p>BinaryAST lar seg integrere i den n\u00e5v\u00e6rende modellen for utvikling og levering av kode uten \u00e5 opprette en ny bytekode og uten \u00e5 endre JavaScript-spr\u00e5ket. Datast\u00f8rrelsen i BinaryAST-formatet er sammenlignbar med komprimert minifisert JavaScript-kode, og behandlingshastigheten \u00f8ker betydelig ved \u00e5 utelate parsing-fasen av kildekodene. I tillegg gj\u00f8r formatet det mulig \u00e5 kompilere til bytekode mens BinaryAST lastes, uten \u00e5 m\u00e5tte vente p\u00e5 fullstendig mottak av alle data. Server-side parsing lar ogs\u00e5 fjerne un\u00f8dvendige funksjoner og overfl\u00f8dig kode fra det som leveres i BinaryAST, noe som sparer tid p\u00e5 b\u00e5de parsing og overf\u00f8ring av un\u00f8dvendig trafikk.<\/p>\n<p>En egenskap ved BinaryAST er ogs\u00e5 muligheten til \u00e5 gjenskape lesbar JavaScript som ikke er identisk med den opprinnelige varianten, men som er semantisk ekvivalent og inkluderer de samme variablene og funksjonsnavnene (BinaryAST opprettholder navnene, men lagrer ikke posisjonsinformasjon i koden, formatering eller kommentarer). Den negative siden er fremveksten av nye vektorer for angrep, men if\u00f8lge utviklerne er disse betydelig f\u00e6rre og mer kontrollerbare enn ved bruk av alternativer, for eksempel spredd bytekode.<\/p>\n<p>Tester av facebook.com viste at parsing av JavaScript tar 10-15% av CPU-ressursene, og at parsing tar mer tid enn generering av bytekode og initial koding for JIT. I SpiderMonkey-motoren tar full bygging av AST 500-800 ms, og anvendelse av BinaryAST gjorde det mulig \u00e5 redusere denne tiden med 70-90%.<br \/>\nGenerelt reduseres parsingtiden for JavaScript med 3-10% for de fleste web-rammeverk ved bruk av BinaryAST, og med 90-97% ved aktivering av modusen som ignorerer ubrukte funksjoner.<br \/>\nVed utf\u00f8relsen av et testsett med JavaScript p\u00e5 1,2 MB, gjorde bruken av BinaryAST at oppstartstiden ble redusert fra 338 ms til 314 ms p\u00e5 en stasjon\u00e6r datamaskin (Intel i7) og fra 2019 ms til 1455 ms p\u00e5 en mobil enhet (HTC One M8).<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Kilde: <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.5 - 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\/no\/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.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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 og Facebook utvikler BinaryAST for \u00e5 akselerere innlasting av JavaScript | ProHoster","description":"Ingeni\u00f8rer fra Cloudflare, Mozilla, Facebook og Bloomberg har foresl\u00e5tt et nytt format","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/33901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=33901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/33901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/25564"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=33901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=33901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=33901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}