Pojdite na dodelitev pomnilnika Fiber za velike nalaganje datotek se razlikuje od node.js na več načinov:
1. dodelitev pomnilnika:
- Go Fiber uporablja knjižnico Fasthttp za obravnavo zahtev HTTP. FastthTTP je zasnovan za visoko zmogljivost in ničelno dodelitev pomnilnika. Vendar to pomeni, da ne upravlja z velikimi nalaganjem datotek, saj naloži celotno telo zahteve v pomnilnik, preden ga obdela.
-Node.js na drugi strani uporablja model I/O, ki ne blokira, ne blokiran. To mu omogoča, da učinkoviteje ravna z velikimi prenosi datotek s pretakanjem podatkov datotek neposredno na cilj, ne da bi celotno datoteko naložili v pomnilnik.
2. BodyLimit:
- Go Fiber vam omogoča, da nastavite mejo telesa, da preprečite, da bi veliki prenos datotek porabili preveč pomnilnika. To je mogoče storiti tako, da v konfiguraciji vlaken nastavite "BodyLimit".
- Node.js ima tudi podoben koncept, imenovan `http.maxheadersize` in` http.maxbodySize`, ki ga lahko uporabimo za omejitev velikosti dohodnih zahtev.
3. Pretok:
- Go Fiber ne podpira pretakanja datotek iz polja. Vendar lahko za stiskanje dohodnih datotek in zmanjšanje porabe pomnilnika uporabite knjižnice, kot je "compress/gzip".
- Node.js podpira pretakanje prenosov datotek prek knjižnic, kot sta `Multer` in` Express-Fileupload`, ki omogočajo pretakanje podatkov datotek neposredno na cilj, ne da bi celotno datoteko naložili v pomnilnik.
4. Ravnanje napak:
- Go Fiber zagotavlja robustne mehanizme za ravnanje z napakami za reševanje morebitnih težav, ki se lahko pojavijo med nalaganjem datotek.
- Node.js zagotavlja tudi robustne mehanizme za ravnanje z napakami, vendar je zaradi svoje narave, ki temelji na dogodkih, bolj zahtevno ravnati z napakami.
5. Učinkovitost:
- GO vlakna je na splošno hitrejša od Node.js zaradi svoje ničelne dodelitve pomnilnika in optimiziranih zmogljivosti.
-Node.js je na drugi strani učinkovitejši pri ravnanju z velikimi nalaganjem datotek zaradi svojega modela, ki ne blokira I/O, ki temelji na dogodkih.
Če povzamemo, je dodelitev pomnilnika GIBER za velike nalaganje datotek manj učinkovita kot Node.js zaradi svoje ničelne dodelitve pomnilnika in pomanjkanja vgrajene podpore za pretakanje nalaganja datotek. Vendar GO vlakna zagotavlja robustne mehanizme za ravnanje z napakami in optimizirano zmogljivost.
Navedbe:[1] https://github.com/gofiber/fiber/isissue/272
[2] https://golang.withcodeexample.com/blog/file-upload-handling-golang-fiber-guide/
[3] https://stackoverflow.com/questions/34874511/node-js-is-not-a-good-option-for-file-uploads-and-All-All-Loop-Language
[4] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[5] https://dev.to/hackmamba/robust-media-upload-with-golang-and-cloudinary-fiber-version-2cmf