Best Practices zur Optimierung der Leistung beim Hochladen von Golang-HTTP-Dateien: Legen Sie ein angemessenes Speicherlimit fest: r.MaxMemory = 32 << 20 // 32 MB Verwenden Sie temporäre Dateien beim Speichern großer Dateien: if err := r.ParseMultipartForm(32 < < ; 20); err != nil { ... } Aktivieren Sie die gleichzeitige Verarbeitung von Goroutine: type multipartFile struct { ... }, func saveFilesConcurrently(files []multipartFile) { ... } Verwenden Sie den Komprimierungsalgorithmus, um die Dateigröße zu reduzieren: import " github.com/klauspost/compress/gzip", func compressImage(file multipartFile) { ... }Mit CDN, zwischengespeicherten Antworten und Codeoptimierung
So optimieren Sie die Leistung mithilfe des HTTP-Datei-Uploads in Golang
Übungsfall: Optimieren Sie den Bild-Upload
Legen Sie angemessene Speichergrenzen fest
r.MaxMemory = 32 << 20 // 32MB
Verwenden Sie temporäre Dateien, um große Dateien zu speichern
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() // ... }
Aktivieren Sie die gleichzeitige Goroutine-Verarbeitung
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() }
Verwenden Sie einen Komprimierungsalgorithmus, um die Dateigröße zu reduzieren
import "github.com/klauspost/compress/gzip" func compressImage(file multipartFile) (*os.File, error) { compressed, err := os.CreateTemp("", "image-*.jpg.gz") if err != nil { return nil, err } c := gzip.NewWriter(compressed) if _, err := io.Copy(c, file); err != nil { return nil, err } c.Close() return compressed, nil }
Zusätzliche Optimierungstipps
Cache-Control
-Header, um Antworten zwischenzuspeichern, die sich normalerweise nicht ändern. Das obige ist der detaillierte Inhalt vonWie kann die Leistung mithilfe des HTTP-Datei-Uploads in Golang optimiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!