- Codbixinta dheer waxay ka dhigan tahay riixitaanka server-ka ee HTTP laakiin waxay la il daran tahay madax-bannaanida, cilladaha waqtiga-dhamaadka, iyo xaddidaadaha kheyraadka.
- Wakiilada, xadka isku xirka biraawsarka, iyo kaydinta ayaa si aamusnaan ah u jebin kara ama u burburin kara dhaqanka codbixinta dheer ee baaxadda leh.
- Hab-raacyada sida Bayeux iyo BOSH waxay ku dhisan yihiin ra'yi ururin dheer si ay u bixiyaan farriimo laba geesood ah, inta badan marka lagu daro daawashada.
- Waqti-joojin la hagaajiyay, isku-darka, cadaadiska, iyo macquulka dib-u-tijaabinta taxaddar leh ayaa lagama maarmaan u ah in JavaScript uu sii ahaado mid xooggan oo codbixin dheer ah.
Codbixinta dheer ee JavaScript waxay u muuqataa mid si khiyaano leh u fudud: codsiga HTTP ha furnaado ilaa server-ku uu wax ka yiraahdo, soo celi xogta, isla markiibana furo codsi cusub. Dibadda waxay u egtahay isgaarsiin waqtiga-dhabta ah, sidaa darteed lama yaabin in barnaamijyada sheekaysiga, dashboard-yada, ciyaaraha, iyo nidaamyada ogeysiiska ay ku tiirsanaayeen sannado badan. Laakiin hoosteeda waxaa jira waxqabad yar, ballaarin, iyo dabinno isku hallayn ah oo qaniina isla marka abkaagu ka bato dad yar oo isticmaala.
Fahmidda dhibaatooyinka dhabta ah ee ra'yi ururinta dheer ee JavaScript waxay la macno tahay in laga gudbo sharraxaadda aasaasiga ah ee "macmiilku wuxuu diraa codsi, server-ku wuu sugaa, server-ku wuu ka jawaabaa" iyo fiirinta macnaha HTTP, xadka biraawsarka, wakiillada, waqtiyada shaqada, iyo beddelka sida WebSockets, streaming HTTP, iyo Server-Sent Events. Tilmaamahan waxaan si qoto dheer uga hadli doonnaa inta ay codbixinta shaqeyneyso, arrimaha ay aqoonsadeen IETF iyo iibiyaasha waaweyn, iyo sida loo go'aamiyo goorta la isticmaalayo, goorta la hagaajinayo, iyo goorta gebi ahaanba la beddelayo.
Waa maxay ra'yi ururinta dheer ee JavaScript dhab ahaantii

Si cad, ra'yi ururinta dheer waa qaab lagu dhisay dusha sare ee HTTP-ga caadiga ah halkaas oo biraawsarka uu codsi u diro oo server-ku si ula kac ah u dib u dhigo jawaabta ilaa xog cusub la heli karo ama waqtigu dhammaado. Isla marka biraawsarka uu helo jawaab, wuxuu farsameeyaa xogta isla markiibana wuxuu joojiyaa codsi kale, isagoo xiriirka "ku dhawaad had iyo jeer" sugaya.
Socodkani aad ayuu uga duwan yahay ra'yi ururin gaaban oo caadi ah, halkaas oo macmiilku uu ku dhufto server-ka waqti go'an isagoo weydiinaya "wax cusub?" iyadoon loo eegin haddii ay jiraan cusbooneysiin. Codbixin dheer, server-ku wuxuu codsiga furan yahay inta lagu jiro waqtiyada aan dhaqdhaqaaqa lahayn, sidaa darteed macmiilku uma baahna inuu si isdaba joog ah u diro ra'yi ururin madhan marka waxba is beddelin.
Wareegga codbixinta dheer ee caadiga ah ee JavaScript wuxuu u eg yahay shaqo isdiiwaangelin ah oo soo noqnoqota oo wacda fetch (ama XMLHttpRequest), sugta jawaabta, maareysa culayska, ka dibna is wacda mar kale. Haddii shabakadu dhacdo ama qalad dhaco, koodku wuu isku dayaa isla markiiba ama dib u dhac yar ka dib, isagoo isku dayaya inuu sii wado xiriirkaas socda intii suurtagal ah.
Habkani si gaar ah ayuu u shaqeeyaa marka fariimaha ay naadir yihiin, sababtoo ah waqtiga aan shaqada ku jirin ee isku xirka ma keeno taraafiko shabakadeed ama culays CPU ah oo ka baxsan kharashka lagu hayo godka furan. Isticmaaluhu wuxuu la kulmaa cusbooneysiin degdeg ah, halka server-ku uu ka fogaado in lagu dhufto hubinta codbixinta joogtada ah.
Si kastaba ha ahaatee, isla marka dhacdooyinku soo noqnoqdaan, dhacdo kastaa waxay u janjeertaa inay kiciso wareeg jawaab celin HTTP oo dhan ah - xariiqda xaaladda, cinwaanada, xaqiijinta, jirka - sidaa darteed qiimaha fariin kasta wuu qarxi karaa qaabka taraafiguna wuxuu bilaabaa inuu u ekaado ilko-dhagax codsi/jawaab ah. Halkaas ayay dhibaatooyinka ku saabsan cabbirka iyo kharashka badan ka bilaabmaan barnaamijyada dhabta ah.
Codbixin gaaban iyo codbixin dheer iyo codbixin daa'im ah

Si aad si dhab ah u fahamto meesha dhibaatada ka jirto, waxay kaa caawineysaa inaad isbarbardhigto ra'yi ururinta dheer iyo ra'yi ururinta gaaban iyo socodka HTTP, maadaama saddexdaba ay yihiin siyaabo lagu been abuuro "riix" hab-raac codsi/jawaab celin aasaasi ah sida HTTP.
Codbixinta gaaban waa kala duwanaansho aan caqli gal ahayn: macmiilku wuxuu si joogto ah u diraa codsiyada HTTP (tusaale ahaan 5-10 ilbiriqsi kasta) server-kuna isla markiiba wuu ka jawaabaa wixii fariimo ah ee yimid tan iyo ra'yi ururintii ugu dambeysay. Haddii aan waxba la heli karin, server-ku wali wuu ka jawaabayaa, badanaa isagoo haysta culays madhan, macmiilkuna si fudud ayuu u sugayaa ilaa wakhtiga xiga.
Qaabkani wuxuu leeyahay laba cilladood oo muuqda: dib u dhaca farriinta wuxuu noqon karaa mid la mid ah muddada codbixinta, server-kuna wuxuu ku qasban yahay inuu maareeyo codsiyada soo noqnoqda xitaa marka aysan jirin xog cusub. Nidaamyada yaryar ama kuwa taraafikada yar yar tani waxay noqon kartaa mid la aqbali karo, laakiin marka la eego baaxadda waxay lumisaa wareegyada CPU-ga, xawaaraha shabakadda, waxayna u keeni kartaa dib u dhacyo la dareemi karo isticmaalayaasha.
Ra'yi ururin dheer ayaa tan ku wanaajisa iyadoo u oggolaanaysa server-ku inuu "furnaado" codsi kasta ilaa wax xiiso leh ay dhacaan - dhacdo la fulinayo ama xadka waqtiga. Daahitaanka fariimaha cusub hadda wuxuu ku dhow yahay hal safar oo shabakadeed oo wareeg ah, jawaabaha madhanna aad ayay u yar yihiin, taasoo yaraynaysa taraafikada lumaysa.
Daawashada HTTP waxay sii socotaa tallaabo dheeraad ah iyadoo aan waligood la xidhin jawaabta: server-ku wuxuu diraa hal jawaab HTTP ah ka dibna wuxuu ku shubaa qaybo badan oo xog ah isku xidhka, iyadoo loo kala saarayo qaab-dhismeed heer codsi ah. Macmiilku wuxuu si tartiib tartiib ah u akhrinayaa qulqulka halkii uu sugi lahaa in jawaabta oo dhan ay dhammaato.
HTTP/1.1 waxaa badanaa lagu hirgeliyaa habka loo yaqaan "transfer encoding", halkaas oo server-ku uu dejiyo Transfer-Encoding: chunked ka dibna uu u diro xog kasta qayb gooni ah oo leh cinwaan dhererkiisa u gaar ah. Qaababka qaabka HTTP/1.0, daawashada waxaa sidoo kale lagu gaari karaa iyadoo laga tagayo dhererka Mawduuca iyo isticmaalka xiriirka dhow sida calaamadda dhammaadka durdurka.
Farqiga muhiimka ah ayaa ah in ra'yi ururin dheer ay soo afjarto jawaabta ka dib farriin kasta, taasoo ku qasbaysa codsi cusub oo ku saabsan dhacdada xigta, halka baahinta tooska ah ay sii waddo isla jawaabta oo ay riixdo farriimaha marka ay dhacaan. Taasi waxay saameyn weyn ku leedahay dib u dhaca, isticmaalka xusuusta, wakiillada, iyo sida aad fariimaha ugu qaabeyso lakabka codsiga.
Sida codbixinta dheer ee HTTP u shaqeyso hoosteeda
Marka laga eego dhinaca borotokoolka HTTP, ra'yi ururinta dheer ma soo bandhigto habab cusub ama koodhadh xaaladeed; waxay kaliya fidisaa macnaha caadiga ah ee codsi sugaya jawaab. Falanqaynta IETF ee "HTTP laba-geesoodka ah" waxay caddaynaysaa in ra'yi ururin dheer ay weli ansax tahay HTTP 1.0/1.1, laakiin waxay ku riixaysaa qaabka inuu ku dhowaado xadka.
Wareegga nolosha aasaasiga ah ee isdhexgalka codbixinta dheer wuxuu u eg yahay sidan: macmiilku wuxuu diraa codsi bilow ah oo wuu hakadaa, server-ku wuxuu dib u dhigaa jawaabta ilaa dhacdo, isbeddel xaaladeed, ama waqti-dhiman dhaco, ka dibna server-ku wuxuu soo celiyaa jawaab buuxda oo HTTP ah (badanaa 200 OK) oo wata xogta dhacdada, ugu dambayntiina macmiilku si dhakhso ah ayuu u soo saaraa codsi cusub.
Qaabkani wuxuu ku socon karaa xiriirrada HTTP ee joogtada ah ama kuwa aan joogtada ahayn; xiriirrada joogtada ah waxaad ka fogaanaysaa kharashka is-gacan-qaadka TCP ee soo noqnoqda adigoo dib u isticmaalaya isla godka si aad u hesho baaritaanno dheer oo badan. Ficil ahaan, isku xidhka TCP ee isla noolaanshaha ayaa had iyo jeer la doorbidaa waxqabadka.
Adeegayaasha hirgeliya ra'yi ururinta dheer badanaa waa inay maareeyaan laba baaldi oo kheyraad ah macmiilkiiba: xidhiidhka TCP laftiisa iyo codsiga HTTP ee aan sugnayn ee safka ama wareegga dhacdada. Nidaamyada hawlgalka waxay si caadi ah u maareeyaan tiro badan oo godad furan ah si hufan, laakiin qaar ka mid ah server-yada HTTP ama albaabada ayaa qoondeeya xusuusta muhiimka ah ee codsi kasta, taas oo noqon karta caqabadda dhabta ah.
Mid ka mid ah sifooyinka xiisaha leh ee ra'yi ururinta dheer ayaa ah in culayska saaran uu si qurux badan u burburo isagoo kordhinaya dib u dhaca halkii uu si adag ugu guuldareysan lahaa. Haddii server-ku uu gaabis yahay, fariimaha loogu talagalay macmiilka ayaa saf geli doona ilaa jawaab laga soo diro; dhacdooyin badan oo saf ah ayaa xitaa loo qaybin karaa hal jawaab codbixin oo dheer, taasoo si lama filaan ah u yareyneysa kharashka farriinta.
Arrimaha iyo xaddidaadaha ra'yi ururinta dheer
Inkasta oo si weyn loo isticmaalo loona jaangooyo ficil ahaan, ra'yi ururin dheer ayaa soo bandhigaysa dhowr arrimood oo farsamo oo caan ah oo si fudud looga heli karo JavaScript haddii aadan taxaddarin. Dhibaatooyinkani waxay ka muuqdaan isticmaalka xawaaraha, dib u dhaca, maaraynta isku xirka, iyo dhaqanka dhexdhexaadiyeyaasha sida wakiilada iyo kaydka.
Kharashka ugu horreeya ee aad gasho waa kharashka ugu horreeya ee aad gasho: codsi kasta oo ra'yi ururin dheer iyo jawaab celin kasta waa farriin HTTP oo dhammaystiran, badanaa oo leh cookies, cinwaanada auth, iyo metadata kale oo laga yaabo inay ka yaraato culayska dhabta ah. Fariimaha yaryar, ee aan soo noqnoqonayn, kharashkan dheeraadka ah ayaa laga yaabaa inuu noqdo mid la aqbali karo, laakiin xaaladaha biilasha ku salaysan mugga ama shabakadaha xaddidan ee bandwidth-ka, farqiga u dhexeeya cabbirka madaxa iyo cabbirka culayska ayaa noqon kara mid qaali ah.
Daahitaanka ugu badan waa arrin kale oo qarsoon: halka celceliska daahitaanka ra'yi ururinta dheer ee dhacdooyinka cusub uu yahay qiyaastii hal transit shabakadeed, dib u dhaca ugu xun wuxuu noqon karaa in ka badan saddex transit. Haddii farriin timaado isla marka adeeguhu uu soo diro jawaab, adeeguhu waa inuu sugaa codsiga xiga ee ka imanaya macmiilka ka hor inta uusan gudbin fariintaas, luminta ama dib-u-gudbinta baakadka TCP waxay sii dheerayn kartaa waqtigan.
Aasaasidda isku xirka waxaa badanaa loo soo bandhigaa walaac, gaar ahaan marka dadku ay isbarbardhigaan ra'yi ururinta dheer ee WebSockets. Haddii jawaab celin kasta oo dheer oo ra'yi ururin ah ay keento in xiriirka HTTP (iyo xiriirka hoose ee TCP) la xiro, kharashka furitaanka si isdaba joog ah wuxuu noqon lahaa mid aad u weyn. Nasiib wanaag, ra'yi ururin dheer ayaa lagu dari karaa oo waa in lagu dhejiyaa xiriiro joogto ah si farqiga gaaban ee u dhexeeya jawaabaha aan loo fasirin caajisnimo; tani waxay u oggolaanaysaa gaadiidku inuu ahaado mid furan oo dib loo isticmaali karo.
Qoondaynta kheyraadka server-ka iyo wakiilku waa xaddidaad wax ku ool ah oo weyn: codsi kasta oo la hayo wuxuu isticmaalaa xusuusta iyo suurtogalnimada mawduuc ama shaqaale ku jira qaab-dhismeedka isku-dhafan. Adeegayaal badan oo duug ah ama kuwa xannibaya si fudud uma gaaraan tobanaan kun oo ra'yi ururin dheer oo isku mar ah sababtoo ah qaabkooda isku-dhafka ah wuxuu filayaa in codsi kasta si dhakhso ah loo dhammaystiro; nidaamyadan, I/O aan isku-dhafanayn ama naqshad dhacdo ku salaysan ayaa ku dhowaad qasab ah.
Dhaqanka kaydinta ayaa sidoo kale jebin kara ra'yi ururin dheer haddii aan si cad loo xakamayn. Kaydka dhexdhexaadka ah ayaa go'aansan kara inay dib u isticmaalaan ama kaydiyaan jawaabaha ilaa aad si cad u calaamadiso codsiyada codbixinta dheer iyo jawaabaha adoo isticmaalaya Cache-Control: no-cache (iyo cinwaanada la xiriira), taasoo hubinaysa in codsi kasta uu dhab ahaantii gaaro server-ka asalka ah oo aan la siinin xog duugowday.
Waqti-joojin, wakiillo, iyo hab-dhaqanka dhexdhexaadinta
Mid ka mid ah dhibaatooyinka ugu dhibka badan adduunka dhabta ah ee ku saabsan ra'yi ururinta dheer ee JavaScript waa inaadan si buuxda u xakamayn shabakadda u dhaxaysa biraawsarka iyo server-ka. Wakiilada, albaabada, dheelitirka culeyska, iyo xitaa biraawsarka caadiga ah dhammaantood waxay soo rogaan waqti-joojin ama xeelado kaydin ah oo jebin kara khiyaaliga xiriirka tooska ah.
Codsiyada codbixinta dheer waxaa loo maleynayaa inay furan yihiin ilaa dhacdo ama waqti aad adigu maamusho, laakiin dhab ahaantii dhexdhexaadiyayaal badan ayaa xiriirka jari doona ka dib muddo gaaban oo go'an. In kasta oo biraawsarradu ay u oggolaan karaan ilaa 300 ilbiriqsi si caadi ah, qaar ka mid ah wakiillada ayaa ku dhaqma waqti-joojin aad u yar, taasoo la macno ah in ra'yi-ururintaada dheer ay ku dhammaan doonto Waqtiga Xawaaraha HTTP 504 ama dib-u-dejin kaliya, taasoo ku qasbaysa macmiilka inuu dib u xidho si ka badan inta aad rabtay.
Tijaabooyinka iyo khibradaha hawlgalka waxay soo jeedinayaan in waqtiyada nasashada qiyaastii 30 ilbiriqsi ay yihiin tanaasul ammaan ah oo ku saabsan deegaanno badan, iyadoo 120 ilbiriqsi ay inta badan shaqeeyaan laakiin ay yihiin kuwo aad u jilicsan. Iibiyeyaasha qalabka shabakadda ee doonaya inay noqdaan kuwo waqti dheer u heellan codbixinta waxaa lagu dhiirigelinayaa inay isticmaalaan waqti-joojin si aad uga dheer waqtiyada caadiga ah ee gaadiidka shabakadda dhexe si aan loo dilin ra'yi-ururinta muddada dheer ee sharciga ah.
Wakiilada gadaal iyo isku-darka isku-xirka ayaa soo bandhigaya nooc kale oo arrimo ah. Qaar ka mid ah dejimaha wakiillada waxay wadaagaan tiro yar oo xiriiro sare ah oo u dhexeeya macaamiil badan; haddii ra'yi ururin dheer ay ku jiraan xiriiradaas la wadaago muddo dheer, codsiyada kale waxaa laga yaabaa inay gaajo noqdaan ama ay saf u galaan gadaashooda, taasoo wiiqaysa waxqabadka goobta oo dhan.
Iyada oo la adeegsanayo qulqulka HTTP, kaydinta dhexdhexaadinta ayaa ah khatar aad uga sii weyn sababtoo ah wakiillada waxaa loo oggol yahay inay kaydiyaan jawaabaha qayb ahaan iyo xogta gudbinta oo keliya marka ay ururiyaan jawaab dhammaystiran. Xaaladdaas, server-ka qulqulka ah ee soo diraya qaybo yar yar oo JavaScript ah oo filaya fulinta degdega ah ee biraawsarka ayaa laga yaabaa inuu ogaado in dhexdhexaadiye uu hayo wax walba ilaa xiriirku dhammaado, taasoo gebi ahaanba baabi'inaysa dhaqanka waqtiga-dhabta ah.
Xadka biraawsarka iyo tirada isku xirka
Laga soo bilaabo JavaScript, waligaa si toos ah uma maamuli kartid xiriirada TCP; waxaad arkaysaa oo keliya dhismayaal heer sare ah sida fetch ama XMLHttpRequest, laakiin biraawsarradu waxay ku dhaqmaan xaddidaadyo ku saabsan inta xiriir ee isbarbar socda ee loo furi karo isla martigeliyaha. Taariikh ahaan xadkani wuxuu ahaa laba isku xidh halkii asal, taas oo ka dhigtay farsamooyinka qaabka Comet mid aad u adag.
Daalacaadaha casriga ah waxay xaddidaadahan u dejiyeen qiyaastii lix ama siddeed xiriir martigeliye kasta, laakiin weli ma jirto hab caadi ah oo laga heli karo JavaScript si loo weydiiyo "imisa xiriir ayaa harsan?" ama si loo isku duwo isticmaalka tabs iyo iframes. Shax kastaa wuxuu si madax-bannaan u abuuri karaa ra'yi ururintiisa dheer, isagoo si dhakhso ah u daminaya boosaska la heli karo isla markaana xannibaya codsiyada kale ee muhiimka ah sida CSS, sawirro, ama wicitaanada API.
Dhaqanka ugu wanaagsan ee dhinaca server-ka waa in la isticmaalo cookies ama farsamo isku xiran si loo ogaado ra'yi ururin dheer oo badan oo ka imanaya isla browser-ka isla markaana laga fogaado in dhammaantood dib loo dhigo. Adigoo si degdeg ah uga jawaabaya ra'yi ururin dheer oo aad si dhab ah u sudho hal ama tiro yar, waxaad yareyn kartaa khatarta gaajada isku xirka ama faragelinta dhuumaha.
Qaar ka mid ah borotokoollada heerka sare ah ee lagu dhisay ra'yi ururin dheer, sida Bayeux iyo BOSH, si cad ayay u qaabeeyaan xadka isku xirka biraawsarka. Badanaa waxay isticmaalaan ugu badnaan laba codsi oo HTTP ah oo heer sare ah hal mar waxayna iska ilaaliyaan inay ku tiirsanaadaan dhuumaha HTTP, kaas oo si liidata loo taageero oo aan laga xakamayn karin JavaScript.
Xididdada HTTP, qaabaynta, iyo kala horraysiinta fariimaha
In kasta oo dhuumaha HTTP (dirista codsiyo badan oo isku mar ah isku xidhka ka hor inta aan la helin jawaabo) ay aragti ahaan yarayn karto dib u dhaca codbixinta ee dheer, haddana dhab ahaantii waa mid jilicsan oo si aan joogto ahayn loo hirgeliyay. RFC 2616 waxay ka taxaddartaa dhuumaha, gaar ahaan codsiyada POST, dhexdhexaadiyeyaasha ama macaamiisha ayaa gebi ahaanba joojin kara.
Habraacyada isku dayaya inay ka faa'iidaystaan tuubooyinka muddo dheer ah waa inay marka hore ogaadaan in tuubooyinka si kalsooni leh loo taageeray dhammaad ilaa dhammaad; haddii kale, waxay dib ugu noqdaan dhaqanka ilaalinta, ee aan tuubada lahayn. Laga soo bilaabo jawiga JavaScript ee biraawsarka, ma haysatid jillaabyo aad ku maamusho tan, sidaa darteed inta badan rarista codbixinta dheer ee ku salaysan JavaScript waxay si fudud u qaadanayaan in dhuumaha aan la heli karin.
Qaabaynta - sida aad u kala qaybiso durdur joogto ah oo bayt ah farriimo codsi oo kala duwan - waa farqi kale oo qarsoon oo u dhexeeya codbixinta dheer iyo socodka HTTP. Ra'yi ururin dheer, jawaab kasta oo HTTP ah si dabiici ah ayay u wadataa hal ama tiro farriimo ah, sidaa darteed qaab-dhismeedkaagu waa mid aan caddayn: hal jawaab waxay la mid tahay hal qayb oo xog macno leh ah.
Marka aad daawanayso, kuma tiirsanaan kartid xuduudaha HTTP ee jajabka ah sida qaabaynta codsigaaga, sababtoo ah wakiillada ayaa dib u jajabin kara qulqulka xogta, isku dari kara qaybaha, ama si kala duwan u kala qaybin kara. Taas macnaheedu waa in barnaamijku uu ku dhejiyo xaddidaadihiisa ama horgalayaasha dhererka ee culeyska lacagta oo uu si waafaqsan u falanqeeyo macmiilka.
Kala horraysiinta fariimaha iyo isku halaynta laguma dammaanad qaadayo ra'yi ururin dheer; waxay ku xiran yihiin hab-maamuuska codsigaaga iyo lakabka kaydinta. Haddii macmiilku ka go'o oo uu dib u xidho khadka dhexe, waxaad u baahan tahay farsamooyin cad (sida lambarrada taxanaha ah ama aqoonsiga dhacdada ugu dambeysa) si loo hubiyo in aan farriimo lumayn ama aan la keenin nidaamkii.
Tixgelinta amniga ee ra'yi ururinta dheer ee JavaScript
Ra'yi ururin dheer oo farsamo ahaan ah ma beddesho qaabka amniga asaasiga ah ee HTTP, laakiin sida badanaa loo hirgeliyo - gaar ahaan biraawsarrada isticmaalaya JavaScript - waxay albaabka u furi kartaa khataro dheeraad ah.
Xalalka codbixinta ee dheer ee badan waxay ku tiirsan yihiin fulinta JavaScript-ka laga soo celiyay server-ka, mararka qaarkood iyada oo loo marayo dib-u-celinta qaabka JSONP ama duritaanka qoraalka firfircoon. Haddii server-kaagu uu u nugul yahay weerarrada duritaanka, weeraryahanku wuxuu si xatooyo ah ugu soo gelin karaa jawaabahaas kood aan kala sooc lahayn, kaas oo biraawsarka uu markaas ku shaqeynayo mudnaanta bogga.
Isticmaalka HTTPS meel kasta waa wax aan laga gorgortami karin: qarinta gaadiidka waxay ka ilaalisaa faragelinta dadka ee dhexda iyo dhagaysiga xiriirada muddada dheer. Marka lagu daro xaqiijinta iyo oggolaanshaha xooggan (tusaale ahaan, oggolaanshaha ku salaysan calaamadda iyo xakamaynta marin u helidda ku salaysan doorka), waxaad ku hayn kartaa natiijooyinka codbixinta ee dheer macaamiisha loogu talagalay inay ku koobnaadaan.
Maadaama codbixinta dheer ay xiriiro badan furnaato muddo dheer, waxay ka dhigi kartaa weerarrada DoS kuwo soo jiidasho leh: weeraryahan wuxuu isku dayi karaa inuu baabi'iyo agabka server-ka isagoo furaya ra'yi ururin dheer oo been abuur ah. Xaddidaadda heerka, kootada isku xirka ee IP-ga ama calaamadda, iyo waqti-joojin macquul ah ayaa ah tallaabooyin difaac oo muhiim ah.
Hanjabaadaha gaarka u ah biraawsarka sida CSRF badanaa ma ahan kuwo udub dhexaad u ah ra'yi ururinno dheer oo XHR/fetch ah oo aan ku tiirsanayn cookies-ka deegaanka, laakiin haddii cookies-ku ku lug leeyahay, waa inaad weli ula dhaqantaa qodobbadan dhammaadka sida aad ula dhaqanto API kasta oo kale oo xasaasi ah. Kukiyada SameSite, calaamadaha CSRF halka ay ku habboon yihiin, iyo siyaasadaha adag ee CORS dhammaantood waa qayb ka mid ah dejinta adag.
Codbixin dheer marka la barbar dhigo WebSockets iyo Dhacdooyinka Server-ka loo diray
Marka laga eego aragtida horumariyaha JavaScript, ra'yi ururin dheer, WebSockets, iyo Dhacdooyinka Server-Sent dhammaantood waa siyaabo lagu gaaro sifooyinka "dareenka waqtiga-dhabta ah", laakiin is-weydaarsigu aad ayuu u kala duwan yahay.
WebSockets waxay aasaastaa kanaal joogto ah oo laba-laab ah oo u dhexeeya biraawsarka iyo server-ka. Ka dib is-gacan-qaadka bilowga ah ee casriyeynta HTTP, qaab-dhismeedka xogtu wuxuu u socon karaa labada dhinacba iyada oo aan la saarin madaxyada HTTP ee fariin kasta, taasoo yaraynaysa daahitaanka fariin kasta iyo isticmaalka ballaca.
Tani waxay ka dhigaysaa WebSockets mid ku habboon xaaladaha soo noqnoqda sida ciyaaraha badan, tafatirka iskaashiga, ama durdurrada telemetry halkaas oo fariimahu ay yar yihiin laakiin soo noqnoqdaan. Dhibaatadu waxay tahay in qaar ka mid ah dab-damisyada shirkadaha, wakiillada hore, ama macaamiisha dhaxalka ah aysan weli si fiican ugu ciyaarin casriyeynta WebSocket, adeegayaashuna waa inay isticmaalaan qaab barnaamij oo kala duwan iyo kaabayaal loogu talagalay tiro badan oo ah godad muddo dheer jiray.
SSE way ka fudud tahay WebSockets marka aad u baahan tahay oo keliya riixitaanka server-ilaa-macmiil, laakiin ma diri karto farriimaha biraawsarka dib ugu soo celinta isla kanaalka; wali waxaad ku tiirsan tahay codsiyada HTTP ee caadiga ah ee isgaarsiinta macmiil-ilaa-server. Waxa kale oo ay u baahan tahay in dhexdhexaadiyayaashu ay u dulqaataan baahinta oo aysan si xad dhaaf ah u ilaalin jawaabaha qayb ahaan.
Marka la barbardhigo kuwan, ra'yi ururin dheer ayaa badanaa ah "hoos u dhaca ugu hooseeya" ee ka shaqeeya deegaanno badan, oo ay ku jiraan biraawsarrada duugga ah iyo dejimaha shabakadaha ee muxaafidka ah. Taasi waa sababta goobo badan oo waqtiga-dhabta ah taariikh ahaan u isticmaali jireen ra'yi ururin dheer sidii dib-u-dhac markii WebSockets la xannibay, taasoo si tartiib tartiib ah u cusboonaysiin jirtay xidhiidhada sida awooduhu u oggolaadaan.
Hab-raacyada adduunka dhabta ah oo lagu daray ra'yi ururinta dheer: Bayeux, BOSH, iyo API-yada u eg SSE
Dhowr borotokool oo heer sare ah ayaa lagu dhisay korka codbixinta dheer iyo qulqulka si looga qariyo dhibka horumariyayaasha codsiyada loona bixiyo API joogto ah. Fahmidda sida ay u isticmaalaan ra'yi ururin dheer waxay ka caawisaa in la caddeeyo awoodaha iyo daciifnimada farsamada.
Hab-maamuuska Bayeux, oo uu caan ku yahay mashruuca CometD, wuxuu taageeraa labadaba codbixinta dheer ee HTTP iyo daawashada sida ikhtiyaarrada gaadiidka. Macmiilka Bayeux wuxuu caadi ahaan u adeegsadaa laba isku xir oo HTTP ah server-ka si fariimadu ay si aan isku mid ahayn ugu socdaan labada jiho iyada oo aan la xannibin codsiyada ra'yi ururinta dheer.
Inta lagu jiro is-gacan-qaadis bilow ah, macmiilka iyo adeegaha ayaa ka wada xaajooda farsamooyinka laba-geesoodka ah ee la taageerayo - codbixinta dheer, daawashada tooska ah, iwm. - macmiilkuna wuxuu mid ka soo xulanayaa is-dul-qaadka. Macaamiisha JavaScript, Bayeux badanaa wuu ka fogaadaa ku tiirsanaanta dhuumaha HTTP wuxuuna ku xaddidaa laba codsi oo aan la fileyn si looga fogaado dhibaatooyinka xaddidaadda isku xirka biraawsarka.
BOSH (Bidirectional-streams over Synchronous HTTP) waxay ka timaadaa adduunka XMPP waxaana loogu talagalay inay ku daydaan kalfadhi TCP u eg oo ka sarreeya HTTP iyadoo la adeegsanayo ra'yi ururin dheer. Maareeyaha xiriirka BOSH wuxuu codsiga macmiilka u furaa oo keliya marka uu xog ka helo server-ka codsiga; isla marka macmiilku helo jawaabtaas, wuxuu soo diraa codsi cusub, isagoo ugu yaraan hal ra'yi ururin dheer sugaya ku dhawaad mar walba.
BOSH waxay isticmaali kartaa hal ama laba lammaane oo jawaab-celin codsi HTTP ah oo isbarbar socda, laga wada xaajoodo bilowga kalfadhiga, waxayna si taxaddar leh u maamuli kartaa inay ixtiraamto xadka isku xirka biraawsarka iyadoo weli u oggolaanaysa farriimaha laba-geesoodka ah ee aan isku mid ahayn. Waxay mamnuucaysaa habaynta wareejinta ee jajaban si looga fogaado arrimaha kaydinta ee dhexdhexaadiyeyaasha waxayna u oggolaanaysaa cadaadis iyada oo loo marayo Content-Coding si loo helo hufnaan.
Dhacdooyinka Server-Sent, inkastoo sida caadiga ah lagu hirgeliyo iyada oo loo marayo streaming halkii laga isticmaali lahaa ra'yi ururin dheer, haddana si dhow ayay isugu xiran yihiin ruux ahaan. Tilmaamaha W3C wuxuu qeexayaa isticmaalka jawaabaha qoraalka/dhacdada-socodka wuxuuna soo jeedinayaa in la joojiyo kala-goynta HTTP ilaa heerka dhacdada uu ku filan yahay, mar kale si looga fogaado arrimo gaar ah oo ku saabsan kaydinta iyo dhexdhexaadinta oo lagu arko qulqulka HTTP/1.1.
Hagaajinta iyo adkeynta codbixinta dheer ee barnaamijyada JavaScript
Haddii aad go'aansato in ra'yi ururin dheer ay tahay doorashada saxda ah ama dib u dhac lagama maarmaan u ah barnaamijkaaga JavaScript, waxaa jira dhowr xeeladood oo ka dhigaya mid hufan, la miisaami karo, oo adag.
Marka hore, si taxaddar leh u hagaaji wakhtigaaga fasaxa. Aad u gaaban oo waxaad lumin doontaa kheyraadka maaraynta dib-u-xiriirinta soo noqnoqda waxayna halis gelin doontaa in macaamiisha oo dhami ay dib u xirmaan hal mar; aad u dheer waxaadna kordhin doontaa fursadda ah inaad gaarto xadka wakiillada ama dheelitirka culeyska, taasoo keenta kala goyn qarsoodi ah. Dhab ahaantii, qiimayaasha ku jira xadka 20-30 ilbiriqsi ee WaitTimeSeconds (ee API-yada sida Amazon SQS) iyo waqtiyada la midka ah ee heerka abka ayaa badanaa dheelitir wanaagsan sameeya.
Marka xigta, tixgeli dhacdooyinka isku-darka ah ee dhinaca server-ka marka farriimo badan la saf u yihiin macmiilka. Bixinta dhowr cusbooneysiin ah oo ku saabsan jawaab celin ra'yi ururin oo dheer ayaa si weyn u yareyneysa kharashka ku baxaya farriinta waxayna ka caawin kartaa nidaamka inuu si qurux badan hoos ugu dhaco culayska saaran iyadoo la beddelayo dib u dhaca si loo helo wax soo saar.
Cadaadisku waa guul kale oo fudud: awood u siinta gzip ama macluumaad la mid ah oo loogu talagalay rarista JSON ee ra'yi ururinta muddada dheer waxay yarayn kartaa isticmaalka ballaca, gaar ahaan marka farriimaha ay wadaagaan qaab-dhismeedka soo noqnoqda. Is-weydaarsiga waa kharash dheeraad ah oo CPU ah oo loogu talagalay cadaadiska, laakiin meelo badan oo dhab ah oo la geeyo taas oo ka miisaan badan wakhtiga wareejinta shabakadda oo yaraada.
Dhinaca JavaScript, maaraynta khaladaadka adag iyo macquulka dib-u-tijaabinta waa wax aan laga gorgortami karin. Wareeggaaga is-diiwaangelinta waa inuu ogaadaa khaladaadka shabakadda, waqtiyada shaqada, ama jawaabaha khaldan oo dib isugu day dib u soo celinta halkii uu ka joojin lahaa server-ka. Dib u soo celinta heerka ah oo leh gariir waa qaab caadi ah si looga hortago duufaannada dib-u-isku dayga ee isku-dhafan inta lagu jiro go'itaanka.
Ugu dambeyntii, la tasho nadiifinta isku xirka marka qaybaha la furo ama tabs-ku xidhmaan. Wareegyada codbixinta ee Zombie ee sii wadaya ka shaqeynta gadaasha waxay ku milmi karaan labadaba agabka macaamiisha iyo awoodda server-ka, markaa had iyo jeer hubi inaad haysato hab aad ku joojin karto soo-qaadista aan la fileynin ama aad ku joojin karto kontaroolayaasha marka aragti la burburiyo ama isticmaaluhu uu baxo.
Sahan dheer oo JavaScript ah ayaa weli ah qalab awood leh oo lagu dhisayo astaamo ku dhow waqtiga dhabta ah ee deegaannada aan laga heli karin WebSockets ama SSE, laakiin waxay la socotaa xirmo kharashyo qarsoon oo ku saabsan cinwaanada, waqtiyada shaqada, wakiillada, iyo isticmaalka kheyraadka oo aad u baahan tahay inaad fahamto oo aad maamusho haddii aad rabto in app-kaagu si habsami leh u koro.