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 extractImage(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!