2010-08-06 3 views
1

Мне нужна помощь при загрузке с веб-сервера ... Что я сейчас делаю, это получить XML-файл с веб-серверов, содержащий изображения, разбор XML, загрузку каждого изображения, сохранение изображения на iphone , и сохранить имя изображения в базе данных sql. Это занимает много времени, потому что есть большое количество изображений для загрузки, и я загружаю один за другим.Загрузка большого количества изображений, что делает его более быстрым

Мое обновление приложения только что получил отклонено, поскольку рецензент decieded, что загрузка слишком долго ... Что забавно, последние два обновления прошло без проблем ..

я думал о том, проносясь эти изображения на сервере и отправка архива на iphone, расстегивая его там, или упаковывая изображения вместе с бинарными и отправляя их в яблоко.

Любые советы о том, как сделать загрузку быстрее, будут оценены. Благодарю.

+0

В общем, нам действительно нужно гораздо больше контекста относительно того, зачем вам нужно много больших загрузок сразу. Прямо сейчас, весь вопрос кажется одной большой плохой идеей. Я бы сказал, отправляйте ссылку на приложение, если вы не возражаете. –

+0

Я думаю, что для вас лучше разместить ссылку на приложение, это поможет вам понять, что вам нужно делать. Некоторые твердые данные тоже помогут - например. сколько изображений есть, каков средний размер изображения в байтах? – JosephH

+0

http://itunes.apple.com/hr/app/crotune/id378647284?mt=8 , чтобы вы могли прочитать описание приложения в itunes, и вы поймете, почему мне нужно загрузить все изображения ... я хочу, чтобы клиенты принять приложение и использовать его на 7 дней отпуска без роуминга сборов, когда в отпуске. только когда у них есть wifi, доступный для проверки обновлений ... Я поговорил с моим клиентом, и он все согласился собрать все изображения в двоичные файлы, но он говорит, что он все равно будет думать об этом, так что это, вероятно, будет решением. будет где-то около 3000 предметов, каждое изображение будет около 8k ... :-) – kviksilver

ответ

1

Вы часто меняете эти изображения? Или только один раз за релиз, если вообще? Если они меняются с каждым выпуском, я бы упаковал их. Если они почти никогда не меняются, переходите к одной огромной загрузке (так что людям не нужно повторно загружать при обновлении), и если они часто меняются, загружайте их файл по файлу, но старайтесь делать 2-3 файла одновременно, используя асинхронная загрузка (если поддерживается).

+0

Мой клиент хочет избежать 20-мегабайтной кеширования данных, которая хранится в приложении, загружая приложения без Wi-Fi, а некоторые изображения меняются еженедельно. В настоящее время приложение управляет измененными изображениями, проверяя сервер и спрашивая, что изменилось с последнего обновления и загрузило новые изображения, поэтому эти промежуточные обновления не являются проблемой, а только первый ... как насчет упаковки изображений в один большой файл и распаковки его на iphone? думал, что я выиграю от сокращения сетевых подключений, но потерял бы время, необходимое для iphone, чтобы распаковать эти файлы ... – kviksilver

0

Один из способов ускорить загрузку этих изображений - разместить их на CDN. Некоторые CDN, такие как Limelight, имеют специальную оптимизацию сети для отправки данных на мобильные устройства. Они также просто лучше выполняют маршрутизацию контента и имеют более высокую пропускную способность для передачи контента. Что приятно в этом подходе, так это то, что вам может не понадобиться менять приложение. Однако CDN могут быть дорогими.

3

BTW, zip не поможет с изображениями. Они уже сжаты, поэтому они просто добавят накладные расходы. Убедитесь, что ваши изображения не больше, чем вам нужно для отображения, и я сделал бы то, что предложил Марио выше, и загрузил их по нескольким асинхронным вызовам (по крайней мере, сделал один большой асинхронный вызов).

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

Если вам действительно нужны все изображения, чтобы сделать их действительными, вы можете загрузить их и отобразить их серым цветом (alpha = 0,4) или что-то еще, чтобы было ясно, что это частичный результат, но этот прогресс , Вероятно, рецензент почувствовал, что слишком много времени для запуска.

+0

Ну, я дам пользователю понять, что загрузка займет некоторое время, покажет индикатор выполнения для каждого загруженного элемента, все книги, и они по-прежнему хотят, чтобы я сократил время, чтобы загрузить все вещи. Без всех этих данных мое приложение бесполезно, могу ли я отправить ссылку на приложение (оно бесплатное), чтобы вы могли проверить дизайн пользовательского интерфейса для дальнейшей помощи, если нужно? Спасибо ... – kviksilver

+0

+1 Я действительно сомневаюсь, что вам нужно * все * изображения для вашего приложения, чтобы они могли использоваться. –

+0

Не совсем верно говорить, что zip не поможет. Если есть много небольших изображений, время загрузки будет затмевано временем установления соединения и накладными расходами заголовков http для каждого элемента. Успешное улучшение может иметь один ZIP-файл, который загружает все изображения в одном соединении с одним набором заголовков. Тем не менее, маловероятно, что использование zip - лучшее решение здесь. – JosephH

0

Скорее всего, ваши изображения слишком велики. Вы сказали, что беспокоитесь о ограничении на 20 Мб, но я думаю, что в этот момент ваши изображения просто слишком велики для телефона.

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

Если вы все еще хотите иметь массовые загрузки, почему бы не использовать его как побочный вариант, а не реализацию по умолчанию?

1

1) Я бы использовал что-то вроде NSOperationQueue для загрузки вокруг трех изображений за раз в фоновом режиме. Гораздо больше, и пользовательский интерфейс начинает становиться изменчивым.

2) Также покажите какой-то индикатор загрузки, пока это происходит.

3) В каком формате представлены ваши изображения? Если вы передаете по сети, вы должны использовать JPG и подумать о том, чтобы установить уровень качества на что-то меньшее (например, 6 даже 5).Чтобы компенсировать потерю качества, вы можете отправлять большие изображения, даже с большим количеством пикселей, которые вы можете легко улучшить с более низким качеством сжатия.

4) Если вам нужно использовать PNG для сохранения прозрачности, подумайте об использовании PNGCrush на изображениях перед отправкой. Как уже отмечалось, zip почти ничего не сделает.

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