У меня есть мобильное приложение, которое хорошо управляется данными, но только через текст и изображения. В текущей версии каждый щелчок или касание требует вытащить новые данные с сервера (appache/php). При сетевой задержке это может занять 1-2 секунды, пока не появится первый контент, который слишком длинный.
Я слышал и рассматривал следующие варианты, но не уверен, что некоторые из них могут быть результативными или если я оставил что-то важное?
Обстоятельная статья по этому вопросу также будет хорошим ответом.
Я бы сказал, что большинство из этих предложений... довольно среднее. За исключением использования сжатия. Определенно включите сжатие на веб-сервере, который вы используете. Вы определенно не хотите сохранить соединение открытым или иметь несколько соединений. Самая большая проблема для мобильных устройств - латентность, а не пропускная способность, поэтому использование нескольких соединений не поможет, но быстро разрядит аккумулятор. Что касается того, что соединение открыто, даже не думайте об этом. Это один из самых больших постулатов мобильной разработки - только держите соединение открытым, когда оно вам нужно.
Эмпирическое правило для мобильных тонких клиентов - загрузить наименьшее количество данных, если это необходимо. Вот несколько советов:
{
success: true,
data:[
{ProductName: "Coca-Cola can", Weight: 380, imageUrl: "http://path.to/image.png"},
{ProductName: "Gillete deodarant", Weight: 500, imageUrl: "http://path.to/image.png"}
]
}
Как вы можете видеть, существует много дублированных имен полей, вы можете избавиться от них, чтобы уменьшить полезную нагрузку следующим образом:
{
success: true,
fields: {"ProductName": 0, "Weight" : 1, "imageUrl": 2}
data:[
["Coca-Cola can", 380, "http://path.to/image.png"],
["Gillete deodarant", 500, "http://path.to/image.png"]
]
}
Уменьшить количество данных, отправляемых каждый раз. Не отправляйте достаточно данных на 10 экранов одновременно. Обеспечьте, возможно, два или три экрана и используйте бесконечную прокрутку или какой-то пейджинг.
Исследуйте кеширование HTTP. Убедитесь, что заголовки кеширования установлены и убедитесь, что веб-клиент, которым вы пользуетесь, уважает эти заголовки.
Кэш агрессивно. Посмотрите на любой клиент Twitter для iPhone/Android. Они не загружают всю массу видимых твитов при каждом запуске, они хранятся локально.