我正在尝试使用C#将图像上传到Amazon S3:
PutObjectRequest titledRequest = null;
S3Response response = null;
using (var memoryStream = new MemoryStream())
{
image.Save(memoryStream, ImageFormat.Png);
titledRequest = new PutObjectRequest();
titledRequest.WithBucketName(bucketName)
.WithKey(keyName)
.WithCannedACL(S3CannedACL.PublicRead)
.WithInputStream(memoryStream);
response = client.PutObject(titledRequest);
}
如您所见,我不是在本地保存图像文件,而是将其流式传输到S3。但是,出于某种原因,对于50kb文件,此过程大约需要50秒!
我的上传速度没有任何问题,超过1mbps。
我想知道首先保存文件并上传会更快吗?
有什么我应该考虑加快上传过程吗?再一次,在宽带方面没有问题!
答案 0 :(得分:5)
如果从输入流上传,请始终使用 内容大小设置。否则输入流的内容必须 在发送到Amazon S3之前缓冲在内存中。这可能会导致 非常消极的性能影响。
很难相信这可能是你的问题,但你应该遵循的最佳做法。
需要考虑的其他事项 -