{"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\/fr\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","title":{"rendered":"Cloudflare, Mozilla et Facebook d\u00e9veloppent BinaryAST pour acc\u00e9l\u00e9rer le chargement du JavaScript.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Les ing\u00e9nieurs de Cloudflare, Mozilla, Facebook et Bloomberg <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/binary-ast\/\">ont \u00e9t\u00e9 propos\u00e9s<\/a><\/noindex> nouveau format <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tc39\/proposal-binary-ast\">BinaryAST<\/a><\/noindex>  pour acc\u00e9l\u00e9rer la livraison et le traitement du code JavaScript lors de l'ouverture de sites dans un navigateur. BinaryAST d\u00e9place la phase d'analyse syntaxique vers le serveur et fournit d\u00e9j\u00e0 un arbre syntaxique abstrait (<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>). Lors de l'utilisation de BinaryAST, le navigateur peut imm\u00e9diatement passer \u00e0 l'\u00e9tape de compilation, en contournant l'analyse du code source JavaScript. <\/p>\n<p>Pour les tests <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/binast\/binjs-ref\">pr\u00e9par\u00e9e<\/a><\/noindex> une impl\u00e9mentation de r\u00e9f\u00e9rence, fournie sous licence MIT. Pour l'analyse, des composants Node.js sont utilis\u00e9s, et le code pour l'optimisation et la g\u00e9n\u00e9ration de l'AST est \u00e9crit en Rust. Du c\u00f4t\u00e9 des navigateurs, la prise en charge de<br \/>\nBinaryAST est d\u00e9j\u00e0 disponible dans <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/#nightly\">versions nocturnes<\/a><\/noindex> Firefox. L'encodeur de BinaryAST peut \u00eatre appliqu\u00e9 \u00e0 la fois au niveau des outils du site final et pour l'emballage de scripts de sites externes du c\u00f4t\u00e9 du proxy ou du r\u00e9seau de diffusion de contenu. Le processus de standardisation de BinaryAST a d\u00e9j\u00e0 commenc\u00e9 dans le groupe de travail <noindex><a rel=\"nofollow\" href=\"https:\/\/tc39.github.io\/\">ECMA TC39<\/a><\/noindex>, apr\u00e8s quoi le format pourra coexister avec les m\u00e9thodes de compression de contenu existantes, telles que gzip et 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 et Facebook d\u00e9veloppent BinaryAST pour acc\u00e9l\u00e9rer le chargement du 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 et Facebook d\u00e9veloppent BinaryAST pour acc\u00e9l\u00e9rer le chargement du JavaScript.\" src=\"\/wp-content\/uploads\/2019\/05\/457e5f127c81b8708cdc04ba0176a636.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Un temps consid\u00e9rable est requis pour traiter le JavaScript, principalement lors de la phase de chargement et d'analyse syntaxique du code. \u00c9tant donn\u00e9 que la taille du JavaScript \u00e0 charger sur de nombreux sites populaires atteint pr\u00e8s de 10 Mo (par exemple, 7,2 Mo pour LinkedIn, 7,1 Mo pour Facebook, 3,9 Mo pour Gmail), le traitement initial du JavaScript entra\u00eene des d\u00e9lais importants. La phase de parsing c\u00f4t\u00e9 navigateur est \u00e9galement ralentit par l'impossibilit\u00e9 de construire compl\u00e8tement l'AST \u00e0 la vol\u00e9e, au fur et \u00e0 mesure du chargement du code (le navigateur doit attendre que les blocs de code soient enti\u00e8rement charg\u00e9s, comme la fin des fonctions, pour obtenir les informations n\u00e9cessaires \u00e0 l'analyse des \u00e9l\u00e9ments en cours).<\/p>\n<p>Une partie du probl\u00e8me est tent\u00e9e de \u00eatre r\u00e9solue par la diffusion de code de mani\u00e8re minimis\u00e9e et compress\u00e9e, ainsi que par le biais de la mise en cache du bytecode g\u00e9n\u00e9r\u00e9 par le navigateur. Sur les sites modernes, le code est mis \u00e0 jour assez fr\u00e9quemment, donc la mise en cache ne r\u00e9sout que partiellement le probl\u00e8me. Une solution possible pourrait \u00eatre WebAssembly, mais il n\u00e9cessite l'utilisation de typage explicite dans le code et convient mal pour acc\u00e9l\u00e9rer le traitement du code JavaScript d\u00e9j\u00e0 existant. <\/p>\n<p>Une autre option consiste \u00e0 fournir du bytecode compil\u00e9 pr\u00eat \u00e0 l'emploi au lieu de scripts JavaScript, mais les d\u00e9veloppeurs des moteurs de navigateur s'y opposent, car le bytecode tiers est difficile \u00e0 v\u00e9rifier, son traitement direct peut entra\u00eener un d\u00e9gradement du Web, des menaces de s\u00e9curit\u00e9 suppl\u00e9mentaires apparaissent et il faut d\u00e9velopper un format de bytecode universel.<\/p>\n<p>BinaryAST permet de s'int\u00e9grer dans le mod\u00e8le actuel de d\u00e9veloppement et de livraison de code sans cr\u00e9er un nouveau bytecode ni modifier le langage JavaScript. La taille des donn\u00e9es au format BinaryAST est comparable \u00e0 celle du JavaScript compress\u00e9 et minimis\u00e9, tandis que la vitesse de traitement est notablement augment\u00e9e gr\u00e2ce \u00e0 l'\u00e9limination de la phase d'analyse des textes sources. De plus, le format permet de compiler en bytecode pendant que BinaryAST est charg\u00e9, sans attendre d'avoir re\u00e7u toutes les donn\u00e9es. En outre, l'analyse c\u00f4t\u00e9 serveur permet d'exclure du rendu de BinaryAST les fonctions inutilis\u00e9es et le code superflu, pour lequel une analyse c\u00f4t\u00e9 navigateur consomme du temps tant pour le traitement que pour le transfert de trafic inutile.<\/p>\n<p>Une caract\u00e9ristique de BinaryAST est \u00e9galement la possibilit\u00e9 de restaurer le JavaScript lisible, qui n'est pas exactement identique \u00e0 la version originale, mais qui est s\u00e9mantiquement \u00e9quivalent et comprend les m\u00eames noms de variables et de fonctions (BinaryAST conserve les noms, mais ne conserve pas les informations sur les positions dans le code, le formatage et les commentaires). L'envers de la m\u00e9daille est l'apparition de nouveaux vecteurs d'attaque, mais selon les d\u00e9veloppeurs, ils sont significativement moins nombreux et plus contr\u00f4lables que lors de l'utilisation d'alternatives, telles que la distribution de bytecode.<\/p>\n<p>Les tests du code de facebook.com ont montr\u00e9 que l'analyse du JavaScript consomme 10 \u00e0 15 % des ressources CPU et que l'analyse prend plus de temps que la g\u00e9n\u00e9ration de bytecode et la formation initiale du code pour JIT. Dans le moteur SpiderMonkey, le temps de construction complet de l'AST est de 500 \u00e0 800 ms, et l'application de BinaryAST a permis de r\u00e9duire ce chiffre de 70 \u00e0 90 %.<br \/>\nGlobalement, pour la plupart des frameworks web, l'utilisation de BinaryAST r\u00e9duit le temps d'analyse du JavaScript de 3 \u00e0 10 % en mode sans optimisation et de 90 \u00e0 97 % en activant le mode d'ignorance des fonctions inutilis\u00e9es.<br \/>\nLors de l'ex\u00e9cution d'un ensemble de tests JavaScript de 1,2 Mo, l'application de BinaryAST a permis de r\u00e9duire le temps de d\u00e9marrage de 338 \u00e0 314 ms sur un syst\u00e8me de bureau (Intel i7) et de 2019 \u00e0 1455 ms sur un appareil mobile (HTC One M8).<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Source : <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.2 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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 et Facebook d\u00e9veloppent BinaryAST pour acc\u00e9l\u00e9rer le chargement de JavaScript | ProHoster","description":"Les ing\u00e9nieurs de Cloudflare, Mozilla, Facebook et Bloomberg ont propos\u00e9 un nouveau format","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/cloudflare-mozilla-i-facebook-razvivayut-binaryast-dlya-uskoreniya-zagruzki-javascript","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/33901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=33901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/25564"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=33901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=33901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=33901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}