LocalStorage, несколько запросов Ajax или огромный запрос Ajax? - PullRequest
7 голосов
/ 11 ноября 2011

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

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

Проблематичной частью является загрузка станций.

Мой первый подход состоял в том, чтобы загрузить целое количество станций при загрузке страницы.Это около 200 Кбайт JSON плюс время, необходимое для перебора массива и размещения его на карте.Они загружаются скрытно, поэтому, когда пользователи нажимают на имя строки, они появляются с помощью функции «findMarker».Если на карте присутствовали другие станции, они скрывались, чтобы избежать слишком большого количества маркеров на карте.

Это работало хорошо с новыми мобильными телефонами, такими как iPhone 4 или совершенно новый HTC, но не очень хорошо сМобильные телефоны 2-х лет.

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

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

НаконецЯ думал об использовании LocalStorage для их хранения, так как они не будут так сильно изменяться, но будут огромным количеством данных, а затем, боль в заднице, чтобы получить их, поскольку они являются ключом-значением,а также (и я не совсем уверен в этом), я мог бы найти устройства, не поддерживающие эту функцию, вынужденные использовать один из других вариантов.

Итак, я подумал, что это может быть кто-тостолкнулся с некоторой подобной проблемой и решил ее каким-то образом или есть несколько советов для меня :).

Любая помощь будет очень признательна.

1 Ответ

5 голосов
/ 11 ноября 2011

Лучший подход зависит от поведения ваших пользователей. Они обычно нажимают на многих станциях или только на нескольких? Предпочитают ли они более быстрый запуск (загрузка по требованию) или более оперативное отображение сведений о станции (предварительная загрузка данных)?

Подход, который стоит исследовать, заключается в загрузке данных по запросу , но с использованием кэширования браузера (заголовки ETag и Expires), чтобы избежать повторного получения одной и той же информации. Это решит обе ваши проблемы без использования LocalStorage.

См. Этот вопрос для различных подходов к кэшированию в браузере. ETag vs Header Expires

...