Cloudflare፣ Mozilla እና Facebook የJavaScript ጭነትን ለማፋጠን BinaryAST ያዘጋጃሉ።

ከክላውድፍላሬ፣ ከሞዚላ፣ ከፌስቡክ እና ከብሉምበርግ የመጡ መሐንዲሶች ተጠይቋል አዲስ ቅርጸት ባለ ሁለትዮሽ በአሳሽ ውስጥ ጣቢያዎችን ሲከፍቱ የጃቫ ስክሪፕት ኮድ መላክ እና ማቀናበርን ለማፋጠን። BinaryAST የመተንተን ደረጃውን ወደ አገልጋዩ ጎን ያንቀሳቅሰዋል እና አስቀድሞ የተፈጠረ የአገባብ አገባብ ዛፍ ያቀርባል (AST). BinaryAST ከተቀበለ በኋላ አሳሹ የጃቫስክሪፕት ምንጭ ኮድን በመተንተን ወደ ማጠናቀር ደረጃው ወዲያውኑ ሊቀጥል ይችላል።

ለሙከራ ተዘጋጅቷል በ MIT ፈቃድ ስር የቀረበ የማጣቀሻ ትግበራ. Node.js ክፍሎች ለመተንተን ጥቅም ላይ ይውላሉ፣ እና የማመቻቸት ኮድ እና AST ትውልድ በዝገት ተጽፏል። የአሳሽ-ጎን ድጋፍ
BinaryAST አስቀድሞ በ ውስጥ ይገኛል። የምሽት ስብሰባ ፋየርፎክስ. በ BinaryAST ውስጥ ያለው ኢንኮደር በሁለቱም በመጨረሻው የጣቢያ መሣሪያ ደረጃ እና በፕሮክሲ ወይም የይዘት ማቅረቢያ አውታረመረብ በኩል የውጪ ድረ-ገጾችን ስክሪፕቶችን ለማሸግ ሊያገለግል ይችላል። በአሁኑ ጊዜ የ BinaryAST የስራ ቡድን ደረጃውን የጠበቀ ሂደት ቀድሞውኑ ተጀምሯል ECMA TC39, ከዚያ በኋላ ቅርጸቱ ከነባር የይዘት መጭመቂያ ዘዴዎች ጋር አብሮ መኖር ይችላል, ለምሳሌ gzip እና brotli.

Cloudflare፣ Mozilla እና Facebook የJavaScript ጭነትን ለማፋጠን BinaryAST ያዘጋጃሉ።

Cloudflare፣ Mozilla እና Facebook የJavaScript ጭነትን ለማፋጠን BinaryAST ያዘጋጃሉ።

ጃቫ ስክሪፕትን በሚሰራበት ጊዜ ኮዱን በመጫን እና በመተንተን ሂደት ውስጥ ከፍተኛ መጠን ያሳልፋል። በብዙ ታዋቂ ጣቢያዎች ላይ የወረደው ጃቫ ስክሪፕት መጠን ወደ 10 ሜጋ ባይት (ለምሳሌ ፣ ለLinkedIn - 7.2 ሜባ ፣ ፌስቡክ - 7.1 ሜባ ፣ ጂሜይል - 3.9 ሜባ) ቅርብ መሆኑን ከግምት ውስጥ በማስገባት የጃቫ ስክሪፕት የመጀመሪያ ሂደት ትልቅ መዘግየትን ያስተዋውቃል። በአሳሹ በኩል ያለው የመተንተን ደረጃም የቀዘቀዘው ኮዱ በሚጫንበት ጊዜ በበረራ ላይ ያለውን AST ሙሉ በሙሉ መገንባት ባለመቻሉ ነው (አሳሹ ለመጫን የኮድ ብሎኮችን እስኪያጠናቅቅ ድረስ መጠበቅ አለበት ፣ ለምሳሌ የተግባሮች መጨረሻ ፣ ለማግኘት። የአሁኑን አካላት ለመተንተን የጎደለው መረጃ).

ኮዱን ባነሰ እና በተጨመቀ መልኩ በማሰራጨት እንዲሁም የተፈጠረውን ባይትኮድ በአሳሹ በመሸጎጥ ችግሩን በከፊል ለመፍታት እየሞከሩ ነው። በዘመናዊ ድረ-ገጾች ላይ፣ ኮዱ ብዙ ጊዜ ተዘምኗል፣ ስለዚህ መሸጎጥ ችግሩን የሚፈታው በከፊል ነው። WebAssembly መፍትሄ ሊሆን ይችላል ነገር ግን በኮዱ ውስጥ ግልጽ የሆነ መተየብ ያስፈልገዋል እና አሁን ያለውን የጃቫስክሪፕት ኮድ ሂደት ለማፋጠን ተስማሚ አይደለም.

ሌላው አማራጭ ከጃቫ ስክሪፕት ስክሪፕት ይልቅ የተዘጋጀ የተቀናበረ ባይትኮድ ማድረስ ነው፣ ነገር ግን የአሳሽ ኢንጂን ገንቢዎች ይቃወማሉ ምክንያቱም የሶስተኛ ወገን ባይትኮድ ለማረጋገጥ አስቸጋሪ ስለሆነ፣ ቀጥተኛ አሰራሩ ወደ ዌብ ስትራቲፊሽን ሊያመራ ስለሚችል ተጨማሪ የደህንነት ስጋቶች ይነሳሉ እና ሁለንተናዊ ባይትኮድ ቅርጸት ያስፈልጋል።

BinaryAST አዲስ ባይት ኮድ ሳይፈጥሩ ወይም የጃቫስክሪፕት ቋንቋን ሳይቀይሩ አሁን ካለው የኮድ ልማት እና ማቅረቢያ ሞዴል ጋር እንዲገጣጠሙ ይፈቅድልዎታል። በ BinaryAST ቅርጸት ያለው የውሂብ መጠን ከተጨመቀ አነስተኛ ጃቫ ስክሪፕት ኮድ ጋር ይነጻጸራል፣ እና የምንጭን የፅሁፍ ትንተና ደረጃን በማስወገድ የማቀነባበሪያው ፍጥነት በከፍተኛ ሁኔታ ይጨምራል። በተጨማሪም ፣ ሁሉም መረጃዎች እስኪጠናቀቁ ድረስ ሳይጠብቅ BinaryAST እንደተጫነ ፣ ቅርጸቱ ወደ ባይትኮድ ማጠናቀር ያስችላል። በተጨማሪም, በአገልጋዩ በኩል መተንተን ጥቅም ላይ ያልዋሉ ተግባራትን እና አላስፈላጊ ኮድን ከተመለሰው የ BinaryAST ውክልና እንዲያስወግዱ ያስችልዎታል, ይህም በአሳሹ በኩል ሲተነተን, ሁለቱንም በመተንተን እና አላስፈላጊ ትራፊክ በማስተላለፍ ጊዜን ያጠፋል.

የ BinaryAST ባህሪ ደግሞ ሊነበብ የሚችል ጃቫ ስክሪፕት ወደነበረበት የመመለስ ችሎታ ነው ፣ ግን ከዋናው ስሪት ጋር ተመሳሳይ ያልሆነ ፣ ግን በትርጉም አቻ እና ተመሳሳይ የተለዋዋጮችን እና የተግባር ስሞችን ያካትታል (BinaryAST ስሞችን ይቆጥባል ፣ ግን በ ውስጥ ስላሉት ቦታዎች መረጃ አያስቀምጥም) ኮድ, ቅርጸት እና አስተያየቶች). የሳንቲሙ ሌላኛው ጎን አዲስ የጥቃት ቬክተሮች ብቅ ማለት ነው, ነገር ግን እንደ ገንቢዎች ከሆነ, እንደ ባይትኮድ ስርጭት ካሉ አማራጮችን ሲጠቀሙ በጣም ያነሱ እና የበለጠ ቁጥጥር አላቸው.

የፌስቡክ.com ኮድ ሙከራዎች እንደሚያሳዩት ጃቫ ስክሪፕትን መተንተን ከ10-15% የሲፒዩ ሀብቶችን እንደሚፈጅ እና መተንተን ለጂአይቲ ባይትኮድ እና የመጀመሪያ ኮድ ማመንጨት የበለጠ ጊዜ ይወስዳል። በ SpiderMonkey ሞተር ውስጥ, ASTን ሙሉ በሙሉ ለመገንባት ጊዜው ከ500-800 ሚ.ሜትር ይወስዳል, እና የ BinaryAST አጠቃቀም ይህንን ቁጥር በ 70-90% ቀንሷል.
በአጠቃላይ ለአብዛኛዎቹ የድር ርችቶች BinaryAST ን ሲጠቀሙ የጃቫስክሪፕት የትንታኔ ጊዜ በ 3-10% ያለ ማመቻቸት ሁነታ እና በ 90-97% ጥቅም ላይ ያልዋሉ ተግባራትን ችላ የማለት ሁነታ ሲነቃ ይቀንሳል.
1.2 ሜባ የጃቫስክሪፕት ሙከራን ሲያካሂዱ፣ BinaryAST ን በመጠቀም የጅምር ሰአቱ ከ338 እስከ 314 ms በዴስክቶፕ ሲስተም (Intel i7) እና ከ 2019 እስከ 1455 ms በሞባይል መሳሪያ (HTC One M8) ላይ እንዲያፋጥን አስችሎታል።

ምንጭ: opennet.ru

አስተያየት ያክሉ