ASPMVC, $.getJSON, очень медленно

Это моя первая игра с JSON, и я удивлен, насколько она медленная.

Я совершенно уверен, что что-то упускаю, и я буду благодарен, если кто-то может помочь.

Вот мой код

$.getJSON('/localhost/CountryList', function (data)
{
   alert ("finished");
});

Мой countryList возвращает такой массив

{"Code":"AF","Name":"Afghanistan"},
{"Code":"AX","Name":"Aland Islands"},
{"Code":"AL","Name":"Albania"},

и т.д....

Полный размер моего массива составляет около 6 КБ, и для его отображения браузером из моей локальной разработки IIS требуется более 1 м 30 с.

Когда я использовал сжатие, размер увеличился до 2 КБ, но время по-прежнему составляет 1 м 20 с.

Это нормально, что JSON такой медленный?


person nachid    schedule 05.05.2010    source источник
comment
Нет, определенно нет. Проверьте с помощью Firebug, что так долго - это запрос или ожидание ответа от сервера? Если второе, то почему так долго?   -  person Tomas Aschan    schedule 05.05.2010
comment
Я не уверен, что я смотрю в правильном месте в FireBug, когда я щелкаю правой кнопкой мыши событие, я вижу, что это: 0 мс DNS-поиск 1 мс Подключение 1 мс Блокировка 0 мс Отправка 1 мс 18 с Ожидание 2 мс Получение   -  person nachid    schedule 05.05.2010


Ответы (1)


Можете ли вы посмотреть на свое взаимодействие в диалоговом окне инструментов разработчика Firebug или Chrome, чтобы увидеть, на что тратится время? Как генерируется контент AJAX? Является ли это статическим ресурсом на сервере или необходима некоторая динамическая работа с потенциально длительной магией базы данных? Ожидается ли результат AJAX или он действительно находится в рендеринге?

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

person Chris Farmer    schedule 05.05.2010
comment
Когда я помещаю содержимое в текстовый файл, я могу мгновенно открыть его из браузера. - person nachid; 05.05.2010
comment
Вы говорите, что вы можете мгновенно вытащить контент в браузер через getJSON, когда контент существует в виде статического файла? Или вы говорите, что можете просто открыть текстовый файл в браузере? Если первое, то похоже, что нет проблем с jQuery или использованием вами getJSON. Таким образом, узкое место находится в вашем коде на стороне сервера для создания контента. - person Chris Farmer; 05.05.2010
comment
нет, я имел в виду открытие текстового файла в браузере. В моем коде я генерирую данные из своей базы данных, и с помощью отладчика я вижу, что время проходит между моментом, когда они отправляются на веб-сервер, и временем, когда они отображаются в браузере. - person nachid; 05.05.2010
comment
Но за это время происходит несколько вещей... контент должен быть сгенерирован на сервере, контент должен быть получен браузером, а html-контент должен отображаться на основе этих данных. Непонятно (во всяком случае мне), где эта задержка на самом деле. Что вы сделали, чтобы изолировать узкое место в одной из этих областей? - person Chris Farmer; 05.05.2010
comment
Мне интересно, есть ли какой-нибудь инструмент, который может помочь изолировать это узкое место - person nachid; 05.05.2010
comment
Firebug может помочь увидеть продолжительность сетевых запросов, а также просто включить ваши данные json, встроенные в вашу страницу, или разместить их как статический внешний ресурс, сохраняя при этом доступ к ним через getJSON. - person Chris Farmer; 05.05.2010
comment
Я создал совершенно новый проект и не смог воспроизвести случай. Что-то не так с моим проектом, который я исследую. - person nachid; 05.05.2010