MERN Stack പഠനത്തിന്റെ 39-ാം ദിവസം
എന്റെ MERN stack പഠനയാത്രയുടെ 39-ാം ദിവസത്തിലാണ് ഞാൻ.
ഇന്നലെ ഞാൻ GET, POST പോലുള്ള HTTP verbs ആണ് പഠിച്ചത്. ഇന്ന് ഞാൻ backend പ്രവർത്തനങ്ങളിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചു. സെർവറുകൾ എങ്ങനെയാണ് data streams-ഉം body parsing-ഉം കൈകാര്യം ചെയ്യുന്നതെന്ന് ഞാൻ പഠിച്ചു.
ഒരു ഉപയോക്താവ് ഒരു ഫോമോ ഫയലോ അയക്കുമ്പോൾ, സെർവറിന് അത് ഒരേസമയം ലഭിക്കില്ല. ഡാറ്റ ചെറിയ കഷണങ്ങളായാണ് വരുന്നത്. ഈ കഷണങ്ങളെയാണ് chunks എന്ന് വിളിക്കുന്നത്.
മെമ്മറി ലാഭിക്കാനായി Node.js streams ഉപയോഗിക്കുന്നു. ഇത് ഒരു വലിയ ഫയലിനെ ഉടൻ തന്നെ നിങ്ങളുടെ സെർവർ മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യുന്നില്ല. പകരം, ഡാറ്റയെ ചെറിയ ഭാഗങ്ങളായി കൈകാര്യം ചെയ്യുന്നു.
ഈ പ്രക്രിയ എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത് എന്ന് താഴെ നൽകുന്നു:
- വരുന്ന POST ഡാറ്റ ഒരു Readable Stream ആയി പ്രവർത്തിക്കുന്നു.
- സെർവർ ബൈനറി ഡാറ്റയുടെ ചെറിയ chunks സ്വീകരിക്കുന്നു.
- ഡാറ്റ ഉപയോഗിക്കുന്നതിന് മുമ്പ് നിങ്ങൾ ഈ chunks ശേഖരിക്കേണ്ടതുണ്ട്.
Node.js-ൽ നിങ്ങൾക്ക് പെട്ടെന്ന് ഒരു request body ലഭിക്കില്ല. പകരം നിങ്ങൾ ചില പ്രത്യേക network events ശ്രദ്ധിക്കേണ്ടതുണ്ട്:
req.on("data"): ഓരോ പുതിയ chunk വരുമ്പോഴും ഈ event പ്രവർത്തിക്കുന്നു. നിങ്ങൾ ഈ chunks ഒരു array-യിൽ സേവ് ചെയ്യുന്നു.req.on("end"): stream പൂർത്തിയാകുമ്പോൾ ഈ event പ്രവർത്തിക്കുന്നു. എല്ലാ ഡാറ്റയും ലഭിച്ചു എന്ന് ഇത് നിങ്ങളെ അറിയിക്കുന്നു.
ഈ കഷണങ്ങളെ യോജിപ്പിക്കാൻ നിങ്ങൾ Buffer.concat ഉപയോഗിക്കുന്നു. അതിനുശേഷം അവയെ ഒരു string ആയി മാറ്റുന്നു.
ഈ രീതി നിങ്ങളുടെ സെർവറിനെ വേഗതയുള്ളതും കാര്യക്ഷമവുമാക്കുന്നു. വലിയ ഫയലുകൾ കൈകാര്യം ചെയ്യുമ്പോൾ മെമ്മറി ക്രാഷ് ആകുന്നത് ഇത് തടയുന്നു.
Source: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp