【发布时间】:2015-09-21 01:14:41
【问题描述】:
我已按照 Amazon 指南将文件上传到 Amazon S3,但我注意到它太慢了。上传一个 20kb 左右的简单 png 文件大约需要 10 秒。
最初我以为问题与线程有关,我已经实现了一个 AsyncTask 来上传图像,但问题仍然存在。以下是用于上传图像的代码。
private class UploadFileTask extends AsyncTask<String, Integer, String> {
String remotePath;
String remoteFileName;
File file;
Context context;
S3UploadInterface listener;
public UploadFileTask(Context context,String remotePath,String remoteFileName, File file, S3UploadInterface listener){
this.context=context;
this.remotePath=remotePath;
this.remoteFileName=remoteFileName;
this.file=file;
this.listener=listener;
}
protected String doInBackground(String... params) {
credentialsProvider = new CognitoCachingCredentialsProvider(context,
"MY_PRIVATE_CREDENTIAL",
Regions.US_EAST_1);
TransferManager transferManager = new TransferManager(credentialsProvider);
Upload upload = transferManager.upload(remotePath, remoteFileName, file);
TransferProgress transferred = upload.getProgress();
while (!upload.isDone()) {
try {
publishProgress((int) transferred.getPercentTransferred());
} catch (Exception e) {
listener.uploadFailed(e);
}
}
return "uploaded";
}
protected void onProgressUpdate(Integer... progress) {
if (listener!=null)
listener.currentUploadProgress(progress[0]);
}
protected void onPostExecute(String result) {
if (listener!=null)
listener.uploadCompleted();
}
}
有解决这个问题的办法吗? 谢谢:)
【问题讨论】:
-
你如何测量时间?上传速度可能因网络质量而异。它还受您连接到哪个端点的影响。例如,如果您在欧洲并且您将文件上传到 us-east-1(美国弗吉尼亚州),它可能会很慢。选择离您最近的端点可能会提高速度。
-
目前我们在欧洲,我们在弗吉尼亚有我们的实例。也许问题是由于区域变化,因为发布的代码是直截了当的。在我们未来的计划中,我们会将我们的实例迁移到爱尔兰,我们将检查问题是否仍然存在。我会持续更新的
-
您看过 Amazon Route 53 (aws.amazon.com/route53) 吗?它是一种基于 DNS 的产品,可让您根据位置路由到最近的可用 S3 或 AWS 资源。
-
是的,在我们计划的架构中,我们希望实施 de Route 53 以提供更大的灵活性。
标签: android amazon-web-services amazon-s3