{"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\/de\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","title":{"rendered":"Cloudflare, Mozilla und Facebook entwickeln BinaryAST, um das Laden von JavaScript zu beschleunigen.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ingenieure von Cloudflare, Mozilla, Facebook und Bloomberg <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/binary-ast\/\">haben<\/a><\/noindex> neues Format <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tc39\/proposal-binary-ast\">BinaryAST<\/a><\/noindex>  zum Beschleunigen der Lieferung und Verarbeitung von JavaScript-Code beim \u00d6ffnen von Websites im Browser. BinaryAST verlagert die Parsing-Phase auf den Server und liefert bereits ein formatiertes abstraktes Syntaxbaum (<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>). Beim Erhalt von BinaryAST kann der Browser sofort zur Kompilierungsphase \u00fcbergehen und das Parsen des Quell-JavaScripts \u00fcberspringen. <\/p>\n<p>F\u00fcr Tests <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/binast\/binjs-ref\">wurde vorbereitet<\/a><\/noindex> die Referenzimplementierung, die unter der MIT-Lizenz bereitgestellt wird. Zum Parsen werden Komponenten von Node.js verwendet, w\u00e4hrend der Code zur Optimierung und Erstellung des AST in Rust geschrieben ist. Die Unterst\u00fctzung f\u00fcr<br \/>\nBinaryAST ist bereits in <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/#nightly\">n\u00e4chtlichen Builds<\/a><\/noindex> Firefox verf\u00fcgbar. Der Encoder in BinaryAST kann sowohl auf der Ebene der Werkzeugkette der Zielwebsite als auch zur Verpackung von Scripts externer Websites auf der Proxy- oder Content Delivery Network-Seite verwendet werden. Der Standardisierungsprozess von BinaryAST durch die Arbeitsgruppe <noindex><a rel=\"nofollow\" href=\"https:\/\/tc39.github.io\/\">ECMA TC39<\/a><\/noindex>, hat bereits begonnen, nach dessen Abschluss wird das Format neben bestehenden Methoden zur Kompression der ausgegebenen Inhalte wie gzip und brotli koexistieren k\u00f6nnen. <\/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 und Facebook entwickeln BinaryAST, um das Laden von JavaScript zu beschleunigen.\" 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 und Facebook entwickeln BinaryAST, um das Laden von JavaScript zu beschleunigen.\" src=\"\/wp-content\/uploads\/2019\/05\/457e5f127c81b8708cdc04ba0176a636.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Eine erhebliche Zeit bei der Verarbeitung von JavaScript wird durch die Lade- und Parsing-Phase des Codes eingenommen. Angesichts der Tatsache, dass die Gr\u00f6\u00dfe des geladenen JavaScripts auf vielen beliebten Websites fast 10 MB erreicht (zum Beispiel LinkedIn \u2014 7,2 MB, Facebook \u2014 7,1 MB, Gmail \u2014 3,9 MB), verursacht die prim\u00e4re Verarbeitung von JavaScript eine signifikante Verz\u00f6gerung. Die Parsing-Phase im Browser wird ebenfalls verlangsamt, da ein vollst\u00e4ndiger Aufbau des AST zur Laufzeit w\u00e4hrend des Ladens des Codes nicht m\u00f6glich ist (der Browser muss auf den Abschluss des Ladens von Codebl\u00f6cken warten, beispielsweise am Ende von Funktionen, um die fehlenden Informationen f\u00fcr das aktuelle Parsen zu erhalten).<\/p>\n<p>Teilweise wird versucht, das Problem durch die Verbreitung von Code in minimierter und komprimierter Form sowie durch das Caching von generiertem Bytecode im Browser zu l\u00f6sen. Auf modernen Websites wird der Code recht h\u00e4ufig aktualisiert, daher l\u00f6st das Caching das Problem nur teilweise. Eine L\u00f6sung k\u00f6nnte WebAssembly sein, jedoch erfordert es die Verwendung von expliziter Typisierung im Code und ist schlecht geeignet zur Beschleunigung der Verarbeitung bereits bestehenden JavaScripts. <\/p>\n<p>Eine andere M\u00f6glichkeit ist die Lieferung von bereit kompilierter Bytecode anstelle von JavaScript-Skripten, aber die Entwickler von Browser-Engines lehnen dies ab, da Dritthersteller-Bytecode schwer zu verifizieren ist, seine direkte Verarbeitung zu einer Fragmentierung des Webs f\u00fchren kann und zus\u00e4tzliche Sicherheitsbedrohungen entstehen. Au\u00dferdem ist die Entwicklung eines universellen Bytecode-Formats erforderlich.<\/p>\n<p>BinaryAST f\u00fcgt sich in das aktuelle Modell der Entwicklung und Bereitstellung von Code ein, ohne neue Bytecodes zu schaffen und ohne die Programmiersprache JavaScript zu \u00e4ndern. Die Datenmenge im BinaryAST-Format ist mit komprimiertem, minifiziertem JavaScript-Code vergleichbar, und die Verarbeitungszeit wird durch den Wegfall der Parsing-Phase der Quelltexte erheblich verk\u00fcrzt. Zudem erm\u00f6glicht das Format, die Kompilierung zu Bytecode w\u00e4hrend des Ladens von BinaryAST durchzuf\u00fchren, ohne auf den Abschluss der Daten\u00fcbertragung zu warten. Dar\u00fcber hinaus erlaubt das Parsing auf der Serverseite das Herausnehmen nicht verwendeter Funktionen und \u00fcberfl\u00fcssigen Codes aus der gelieferten Darstellung von BinaryAST, f\u00fcr die bei einem Parsing auf der Client-Seite Zeit sowohl f\u00fcr die Analyse als auch f\u00fcr die \u00dcbertragung \u00fcberfl\u00fcssigen Datenverkehrs aufgewendet wird.<\/p>\n<p>Eine Besonderheit von BinaryAST ist auch die M\u00f6glichkeit, lesbaren JavaScript-Code wiederherzustellen, der nicht eins zu eins mit der Originalversion \u00fcbereinstimmt, sondern semantisch \u00e4quivalent ist und dieselben Variablen- und Funktionsnamen enth\u00e4lt (BinaryAST speichert die Namen, beh\u00e4lt jedoch keine Informationen \u00fcber Positionen im Code, Formatierungen oder Kommentare). Auf der anderen Seite entstehen neue Angriffsvektoren, aber laut den Entwicklern sind diese erheblich geringer und besser kontrollierbar als bei der Anwendung von Alternativen wie der Verbreitung von Bytecode.<\/p>\n<p>Code-Tests von facebook.com haben gezeigt, dass f\u00fcr das Parsing von JavaScript 10-15 % der CPU-Ressourcen aufgewendet werden und das Parsing mehr Zeit in Anspruch nimmt als die Generierung von Bytecode und die anf\u00e4ngliche Codeerstellung f\u00fcr JIT. Im SpiderMonkey-Engine dauert der gesamte Aufbau des AST 500-800 ms, und die Anwendung von BinaryAST hat es erm\u00f6glicht, diesen Wert um 70-90 % zu reduzieren.<br \/>\nInsgesamt wird die Zeit f\u00fcr das Parsen von JavaScript bei den meisten Web-Frameworks mit der Anwendung von BinaryAST um 3-10 % im nicht optimierten Modus und um 90-97 % im Modus zur Ignorierung nicht verwendeter Funktionen verk\u00fcrzt.<br \/>\nBei der Ausf\u00fchrung eines Test-JavaScript-Sets mit einer Gr\u00f6\u00dfe von 1,2 MB erm\u00f6glichte die Anwendung von BinaryAST, die Startzeit von 338 ms auf 314 ms auf einem Desktop-System (Intel i7) und von 2019 ms auf 1455 ms auf einem mobilen Ger\u00e4t (HTC One M8) zu beschleunigen.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Quelle: <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.1.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\/de\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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 und Facebook entwickeln BinaryAST zur Beschleunigung des JavaScript-Loadings | ProHoster","description":"Ingenieure von Cloudflare, Mozilla, Facebook und Bloomberg haben ein neues Format vorgeschlagen","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/33901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=33901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/33901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/25564"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=33901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=33901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=33901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}