2010-09-03 1 views
0

Я сейчас разрабатываю библиотеку javascript, которая состоит из 70 000 деревень в Индонезии (доступна по адресу http://bisbak.com/regina/), и я создаю виджет для браузера данных. Все в порядке в Safari и Firefox. Но при использовании Chrome всегда требуется много времени, когда я выбираю район (который автоматически загружает деревни). Код для извлечения районных деревень выглядит следующим образом:Как правильно выбрать/запросить 70 000 данных json?

for (n in data) { 
    var rs = []; 
    if (n is ok) rs.push(data[n]); 
    return rs; 
} 

данные json объект с более чем 70 000 ключей деревни.

+0

Просьба предоставить небольшой пример объекта данных и есть ли у вас возможность уточнить запрос по алфавиту или количеству результатов (разбиение на страницы)? – BGerrissen

+0

Вот как данные деревни хранятся: данные: { 1205060020: [ "Parbaju Toruan", 1], 1205060021: [ "Hapoltahan", 1], ... } Первый 7 цифр на самом деле является идентификатором деревенского родителя, который является районом, и используется в качестве аргумента запроса. – Muslax

ответ

0

Возможно, вы должны загрузить данные только в случае необходимости.

В вашем случае вы можете загрузить только Provinsi при запуске. И когда выбрано одно Provinsi, вы загружаете все Kab./Kota предметов, которые ему принадлежат; и когда выбрано 1 Kab./Kota, вы только все Kecamatan элементов, которые принадлежат к нему, и так далее.

Для повышения производительности вы можете загрузить два уровня вместо одного. Поэтому, когда выбран пункт Provinsi, вы загружаете все Kab./Kota и Kecamatan, которые принадлежат ему. Кроме того, кешируйте данные на стороне клиента и сервера.

+0

Я думаю, что я уже так делал. Группа деревень только строится/загружается, когда выбран кекамат (район). Я не знаю, какая часть кода замедляет запрос при работе в Chrome. В Safari и Firefox я никогда не получаю заметную задержку, даже если я добавляю свойства для каждого объекта (например, население, почтовый индекс и т. Д.). – Muslax

+0

@Muslax: Получение */regina/regina-desa-bps.js * занимает большую часть времени (см. Http://tools.pingdom.com/?url=http://bisbak.com/regina/). – Gumbo

+0

Да, это 2 МБ или больше. Но даже когда я тестировал офлайн, Chrome работает на протяжении более 8 секунд. Существует ли ограничение размера данных JS? Или вы думаете, что что-то еще можно сделать? Благодарю. – Muslax

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