Maison > Article > développement back-end > Comment optimiser les performances en utilisant le téléchargement de fichiers HTTP dans Golang ?
Meilleures pratiques pour optimiser les performances de téléchargement de fichiers HTTP Golang : définissez des limites de mémoire raisonnables : r.MaxMemory = 32 << 20 // 32 Mo Utilisez des fichiers temporaires lors du stockage de fichiers volumineux : if err := r.ParseMultipartForm(32 < < 20); err != nil { ... } Activer le traitement simultané Goroutine : tapez multipartFile struct { ... }, func saveFilesConcurrently(files []multipartFile) { ... } Utilisez l'algorithme de compression pour réduire la taille du fichier : import "github .com/klauspost/compress/gzip", func compressImage(file multipartFile) { ... }Utilisation du CDN, des réponses mises en cache et de l'optimisation du code
Comment optimiser les performances à l'aide du téléchargement de fichiers HTTP dans Golang
Pratique cas : Optimiser le téléchargement d'images
Définir des limites de mémoire raisonnables
r.MaxMemory = 32 << 20 // 32MB
Utiliser des fichiers temporaires pour stocker des fichiers volumineux
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() // ... }
Activer le traitement simultané 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() }
Utiliser un algorithme de compression pour réduire la taille du fichier
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 }
Conseils d'optimisation supplémentaires
Cache-Control
pour mettre en cache les réponses qui ne changent généralement pas. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!