Какой самый JSON вы можете ожидать декодировать на стороне клиента? - PullRequest
1 голос
/ 30 ноября 2009

Этим утром я попытался использовать средства декодирования JSON ExtJS против 0,75 МБ данных, и это привело к сбою FF3. Мне интересно, какой самый JSON разумно ожидать декодирования на стороне клиента? Это может быть использование ExtJS, jQuery, других структур Javascript или любое встроенное декодирование, которое может предложить сам Javascript.

Ответы [ 4 ]

1 голос
/ 30 ноября 2009

Это во многом зависит от клиентского браузера, поскольку Chrome не будет иметь проблем с чем-то таким большим, в то время как IE6, скорее всего, остановится на месте.

Я бы порекомендовал вместо большой передачи JSON размером 750 КБ, которую вам пришлось бы декодировать сразу, попытаться отправлять меньшие (100 КБ) сообщения в фоновом режиме и запрашивать / показывать часть данных, которую клиент нужно в первую очередь. Таким образом, ваша страница будет чувствовать себя быстрее. Всегда старайтесь загружать по требованию большие наборы данных.

Мне кажется, что проблема заключается не в размере сообщения JSON, а в реализации JSON в ExtJS в FF.

Вы пробовали это в других браузерах? Если это происходит только на FF, я бы порекомендовал попробовать и использовать собственный интерфейс JSON Firefox для декодирования и проверки работоспособности.

Кроме того, вы проверили, что ответ JSON действительно правильный? Это может быть сбой анализатора JSON.

1 голос
/ 30 ноября 2009

У меня была эта проблема с анализатором JSON YUI, поэтому я попробовал анализатор JSON Prototype для больших наборов данных и обнаружил, что он работает намного лучше. Я также обнаружил, что как только наборы данных достигают определенного размера, они занимают слишком много времени для анализа, и браузер выдаст сообщение с вопросом, хотите ли вы прекратить работу. Поэтому для больших наборов данных, возможно, стоит разделить их на более мелкие куски, которые легче переваривать.

0 голосов
/ 01 декабря 2009

Это интересно, поскольку Ext просто использует собственный анализ JSON браузера, если он поддерживается браузером, иначе это evals JSON. Там нет никакого ручного анализа любого вида, так что не уверен, как это повлияет на Firebug. Одна вещь, которую вы можете попробовать, проверить значение Ext.USE_NATIVE_JSON непосредственно перед вашей логикой синтаксического анализа (должно быть true, если вы используете FF 3.1+, иначе будет false). Попробуйте установить для него противоположное значение и посмотрите, изменит ли это что-либо (опять же, не уверен, почему это произойдет, но стоит попытаться выяснить, есть ли какая-то разница в вашем случае).

Кстати, это ужасно много JSON ...;)

0 голосов
/ 30 ноября 2009

Как оказалось, виновником был Firebug. Когда он выключен, и Ext.util.JSON.decode, и встроенная в Javascript функция eval () возвращаются за 0,15 секунды.

При включенном Firebug eval возвращается в 0.3, тогда как я наконец-то получил Ext.util.JSON.decode для завершения с Firebug, и это заняло 60 с лишним секунд !! Мне обязательно нужно включить Firebug во время разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...