Bagaimana untuk mengoptimumkan prestasi menggunakan muat naik fail HTTP di Golang?

PHPz
Lepaskan: 2024-06-04 14:16:05
asal
872 orang telah melayarinya

Amalan terbaik untuk mengoptimumkan prestasi muat naik fail HTTP Golang: Tetapkan had memori yang munasabah: r.MaxMemory = 32 << 20 // 32MB Gunakan fail sementara apabila menyimpan fail besar: if err := r.ParseMultipartForm(32 < < ; 20); err != nil { ... } Dayakan pemprosesan serentak Goroutine: taip multipartFile struct { ... }, func saveFilesConcurrently(files []multipartFile) { ... } Gunakan algoritma pemampatan untuk mengurangkan saiz fail: import " github.com/klauspost/compress/gzip", func compressImage(file multipartFile) { ... }Menggunakan CDN, jawapan cache dan pengoptimuman kod

如何在 Golang 中使用 HTTP 文件上传优化性能?

Cara mengoptimumkan prestasi menggunakan muat naik fail HTTP dalam Golang

Kes amalan: Optimumkan muat naik imej

Tetapkan had memori yang munasabah

r.MaxMemory = 32 << 20 // 32MB
Salin selepas log masuk

Gunakan fail sementara untuk menyimpan fail besar

if err := r.ParseMultipartForm(32 << 20); err != nil {
    return // 处理错误
}
for _, file := range r.MultipartForm.File["images"] {
    f, err := os.CreateTemp("", "image-*.jpg")
    if err != nil {
        return // 处理错误
    }
    if _, err := io.Copy(f, file); err != nil {
        return // 处理错误
    }
    f.Close()
    // ...
}
Salin selepas log masuk

Dayakan pemprosesan serentak Goroutine

type multipartFile struct {
    *multipart.FileHeader
    *os.File
}

func saveFilesConcurrently(files []multipartFile) {
    var wg sync.WaitGroup
    for _, file := range files {
        wg.Add(1)
        go func(f multipartFile) {
            defer wg.Done()
            // ...
        }(file)
    }
    wg.Wait()
}
Salin selepas log masuk

Petua pengoptimuman tambahan

  • Gunakan CDN: Menyimpan fail statik pada CDN boleh mengurangkan beban pelayan.
  • Cache respons: Gunakan pengepala untuk cache respons yang biasanya tidak berubah. Cache-Control
  • Pengoptimuman Kod: Gunakan alat analisis prestasi untuk mengenal pasti dan menghapuskan kesesakan.

Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan prestasi menggunakan muat naik fail HTTP di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan