Golang HTTP ファイル アップロードのパフォーマンスを最適化するためのベスト プラクティス: 適切なメモリ制限を設定します: r.MaxMemory = 32 << 20 // 32MB 大きなファイルを保存する場合は一時ファイルを使用します: if err := r.ParseMultipartForm(32 < < ; 20); err != nil { ... } Goroutine の同時処理を有効にする: type multipartFile struct { ... }, func saveFilesConcurrently(files []multipartFile) { ... } 圧縮アルゴリズムを使用してファイル サイズを削減する: import " github.com/klauspost/compress/gzip", func compressImage(file multipartFile) { ... }CDN、キャッシュされた応答、コードの最適化を使用する
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 サイトの他の関連記事を参照してください。