Alokasi memori GO Fiber untuk unggahan file besar berbeda dari node.js dalam beberapa cara:
1. Alokasi Memori:
- Go Fiber menggunakan pustaka fasthttp untuk menangani permintaan http. FASTHTTP dirancang untuk alokasi memori berkinerja tinggi dan nol. Namun, ini berarti tidak menangani unggahan file besar secara efisien, karena memuat seluruh badan permintaan ke dalam memori sebelum memprosesnya.
-Node.js, di sisi lain, menggunakan model I/O yang digerakkan oleh peristiwa. Ini memungkinkannya untuk menangani unggahan file yang besar secara lebih efisien dengan mengalirkan data file langsung ke tujuan tanpa memuat seluruh file ke dalam memori.
2. BodyLimit:
- Go Fiber memungkinkan Anda untuk menetapkan batas tubuh untuk mencegah unggahan file besar dari terlalu banyak mengonsumsi memori. Ini dapat dilakukan dengan mengatur `BodyLimit` dalam konfigurasi serat.
- Node.js juga memiliki konsep serupa yang disebut `http.maxheadsize` dan` http.maxbodysize` yang dapat digunakan untuk membatasi ukuran permintaan yang masuk.
3. Streaming:
- Go Fiber tidak mendukung streaming file unggahan di luar kotak. Namun, Anda dapat menggunakan pustaka seperti `kompres/gzip` untuk mengompres file yang masuk dan mengurangi penggunaan memori.
- Node.js mendukung pengunggahan file streaming melalui pustaka seperti `Multer` dan` Express-Fileupload`, yang memungkinkan Anda untuk streaming data file langsung ke tujuan tanpa memuat seluruh file ke dalam memori.
4. Penanganan kesalahan:
- Go Fiber menyediakan mekanisme penanganan kesalahan yang kuat untuk menangani masalah apa pun yang mungkin timbul selama unggahan file.
- Node.js juga menyediakan mekanisme penanganan kesalahan yang kuat, tetapi bisa lebih menantang untuk menangani kesalahan karena sifatnya yang didorong oleh peristiwa.
5. Kinerja:
- GO Fiber umumnya lebih cepat dari Node.js karena alokasi memori nol dan kinerja yang dioptimalkan.
-Node.js, di sisi lain, lebih efisien dalam menangani unggahan file besar karena model I/O yang tidak digerakkan oleh peristiwa.
Singkatnya, alokasi memori GO Fiber untuk unggahan file besar kurang efisien daripada node.js karena alokasi memori nol dan kurangnya dukungan bawaan untuk unggahan file streaming. Namun, GO Fiber memberikan mekanisme penanganan kesalahan yang kuat dan kinerja yang dioptimalkan.
Kutipan:[1] https://github.com/gofiber/fiber/issues/272
[2] https://golang.withcodexample.com/blog/file-upload-handling-golang-iger-guide/
[3] https://stackoverflow.com/Questions/34874511/node-js-is-not-a-o-to-option-for-file-uploads-and-all-event-loop-language
[4] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/go/
[5] https://dev.to/hackmamba/robust-media-upload-with-golang-and-cloudiner-fiber-version-2cmf