ホームページ > バックエンド開発 > Golang > Golang で HTTP ファイル アップロードを使用してパフォーマンスを最適化するにはどうすればよいですか?

Golang で HTTP ファイル アップロードを使用してパフォーマンスを最適化するにはどうすればよいですか?

PHPz
リリース: 2024-06-04 14:16:05
オリジナル
905 人が閲覧しました

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 文件上传优化性能?

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
}
ログイン後にコピー

その他の最適化のヒント

  • CDN を使用する: CDN に静的ファイルを保存すると、サーバーの負荷を軽減できます。
  • 応答をキャッシュする: ヘッダーを使用して、通常は変更されない応答をキャッシュします。 Cache-Control
  • コードの最適化: パフォーマンス分析ツールを使用してボトルネックを特定し、排除します。

以上がGolang で HTTP ファイル アップロードを使用してパフォーマンスを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート