Работа над проектом, который имеет много загрузки изображений. И каждое изображение будет изменено и уменьшено.
Сначала я попытался обработать загрузку всех изображений одним запросом, а когда я тестировал его на сервере, он выдал ошибку времени ожидания ответа.
Теперь я отправляю запрос на каждый загружаемый файл, и это, похоже, замедляет работу сервера.
У вас есть предложения для меня?
Мой код:
func SavePhotoWithBuffer(bigBuf, thumbBuf bytes.Buffer, bigSize, thumbSize int64, fileName, contentType string) {
params := &s3.PutObjectInput{
Bucket: aws.String("bucket"),
Key: aws.String(fileName),
Body: bytes.NewReader(bigBuf.Bytes()),
ACL: aws.String("public-read"),
ContentLength: aws.Int64(bigSize),
ContentType: aws.String(contentType),
}
thumbParams := &s3.PutObjectInput{
Bucket: aws.String("bucket"),
Key: aws.String("t_" + fileName),
Body: bytes.NewReader(thumbBuf.Bytes()),
ACL: aws.String("public-read"),
ContentLength: aws.Int64(thumbSize),
ContentType: aws.String(contentType),
}
UploadWithParams(params, thumbParams)
}
//I've used github.com/patrickmn/go-cache package to cache the session.
func Open() *s3.S3 {
var cachedData = cacheservice.GetCache("s3session")
if cachedData == nil {
var sess *s3.S3
accessKey := "accessKey"
secretKey := "secretKey"
token := ""
cred := credentials.NewStaticCredentials(accessKey, secretKey, token)
_, err := cred.Get()
if err != nil {
fmt.Printf("bad credentials: %s", err)
}
conf := aws.NewConfig().WithRegion("eu-west-1").WithCredentials(cred)
conf.Endpoint = aws.String("ams3.digitaloceanspaces.com")
sess = s3.New(session.New(), conf)
cacheservice.SetCache("s3session", sess)
return sess
}
return cachedData.(*s3.S3)
}
func UploadWithParams(params, thumbParams *s3.PutObjectInput) {
var se = Open()
var err error
_, err = se.PutObject(params)
if err != nil {
fmt.Printf("bad response: %s", err)
}
_, err = se.PutObject(thumbParams)
if err != nil {
fmt.Printf("bad response: %s", err)
}
}