Golang HTTP ファイル アップロードのパフォーマンスを最適化するためのベスト プラクティス: 適切なメモリ制限を設定します: r.MaxMemory = 32
Golang で HTTP ファイルアップロードを使用してパフォーマンスを最適化する方法
実践例: 画像のアップロードを最適化する
適切なメモリ制限を設定する
r.MaxMemory = 32 << 20 // 32MB
一時ファイルを使用して大きなファイルを保存する
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() // ... }
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() }
圧縮アルゴリズムを使用してファイルサイズを削減する
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 }
その他の最適化のヒント
Cache-Control
以上がGolang で HTTP ファイル アップロードを使用してパフォーマンスを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。