2015-08-16 4 views
4

Я использую Amazon S3 для хранения фотографий профиля для учетных записей пользователей в приложении iOS с помощью swift. Я могу получить фотографии, которые я хочу получить с S3, но загрузка их занимает очень много времени. Я не знаю, почему это происходит. Это то, как работает S3, или есть лучший способ сделать что-то? Это мой код для скачивания картинки:Почему AWS S3 так медленно? (Swift)

let downloadingFilePath1 = NSTemporaryDirectory().stringByAppendingPathComponent("temp-download") 
     let downloadingFileURL1 = NSURL(fileURLWithPath: downloadingFilePath1) 
     let transferManager = AWSS3TransferManager.defaultS3TransferManager() 
     let readRequest1 : AWSS3TransferManagerDownloadRequest = AWSS3TransferManagerDownloadRequest() 
     readRequest1.bucket = "groopapictures" 
     readRequest1.key = self.searchTextField.text 
     readRequest1.downloadingFileURL = downloadingFileURL1 

     transferManager.download(readRequest1).continueWithBlock { (task) -> AnyObject! in 
      println(task.error) 
      if task.error == nil { 
       self.ppImageView.hidden = false 
       println("Fetched image") 
       self.ppImageView.image = UIImage(contentsOfFile: downloadingFilePath1) 

      } 
      return nil 
     } 

Любая помощь будет принята с благодарностью!

ответ

2

Проверьте, в какой очереди вы работаете в своем возвратном блоке. Если это не главная очередь, установка image свойства UIImageView может занять много времени, чтобы быть «замеченной» и обновленной. Протестируйте это, поместив линию назначения изображения внутри dispatch_async() в основную нить.

Если это не поможет, запустите Charles и посмотрите, сколько времени занимает S3, чтобы вернуть изображение.

+0

Кажется, что это может быть правильно, но я понятия не имею, как это сделать, не могли бы вы привести пример? – JFDeveloper

+0

Это сработало! Спасибо огромное! – JFDeveloper

+0

Рад это слышать! Удачи вам в остальной части вашего проекта. –

0

Скорость загрузки может варьироваться в зависимости от региона, созданного вашим ковшом, и вашего места доступа. Не забудьте выбрать регион, который географически находится рядом с вашим местоположением, создавая ведро в AWS S3.

This image taken from amazon s3 documentation

Вы можете обратиться Amazon s3 документации в следующих link, чтобы получить представление о ковшом регионе.

Спасибо!

Смежные вопросы