Скорость загрузки соединения меняется - первый раз занимает гораздо больше времени - почему? - PullRequest
1 голос
/ 29 июля 2011

моему приложению нужно загрузить некоторые данные (около 50 тыс.) Во время запуска.В настоящее время я оцениваю скорость загрузки при нескольких обстоятельствах, особенно при низкой скорости соединения.

У меня есть простой тестовый код, показанный ниже.Кнопка запускает загрузку файла и запускает измерение, окончание измерения - когда загрузка завершена (кстати, все это выполняется в главном потоке).

При первом нажатии кнопки,время загрузки намного дольше, чем если бы я нажимал кнопку последовательно (как через 2 с).Если я подожду 10 секунд и снова нажму, время снова будет больше.

Почему это так?Стоит ли так много времени, чтобы установить первоначальное соединение?Я знаю, что код ниже довольно примитивен.Что было бы лучшим способом получить соединение быстрее.

РЕДАКТИРОВАТЬ: У меня есть предположение, что это определенно связано с тем, как ISP / телефонная компания обрабатывает интернет-соединение.Может ли быть так, что интернет-соединение моего интернет-провайдера урезано до определенного минимума, когда я не активно использую сеть?И потом, когда я что-то скачиваю, добавляются еще «каналы» для лучшей скорости?Я проверил несколько сим-карт: чем дороже скорость передачи данных, тем последовательнее поведение.Скажем, если я использую SIM-карту марки A, если у меня есть поведение, описанное выше, если я использую марку B (премиум), все хорошо.

Заранее большое спасибо


NSURL *url = [NSURL URLWithString:@"http://myServer/testFeed1.zip"];
NSData *urlData = [NSData dataWithContentsOfURL:url];

… сохранить файл

Ответы [ 3 ]

1 голос
/ 07 августа 2011

Спасибо за ваш вклад, но это определенно произошло из-за снижения скорости интернет-провайдера (конечно, мобильной связи).Интересно посмотреть, насколько велика разница между разными SIM-картами, даже если соединение «выглядит» хорошо (знак 3G и хороший прием).Я использовал некэшированный метод, но он не изменился.

0 голосов
/ 29 июля 2011

Я не уверен, но я думаю, dataWithContentsOfURL: реализует какое-то кэширование.Таким образом, чем больше измеренное вами время будет фактическим временем загрузки.Вы можете узнать, пытались ли вы выполнить следующие действия:

NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:yourURL options:NSDataReadingUncached error:&error];

Если причиной является кэширование, загрузка теперь должна всегда занимать больше времени.(Я нашел этот фрагмент кода здесь .)

Обновление: Если время загрузки является проблемой, вам следует рассмотреть возможность выполнения асинхронной загрузки с использованием NSURLConnection.Это значительно улучшит пользовательский опыт.Кроме того, вы можете измерить время соединения и загрузки отдельно. Вот простой пример о том, как это сделать.

0 голосов
/ 29 июля 2011

Возможно, кешировано .. Вы можете использовать эту ссылку, чтобы проверить, что: myServer / testFeed1.zip?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...