2011-01-13 2 views
0

У меня есть веб-страница с ajax. Ajax HAS загружает некоторые данные с другого сайта, что занимает некоторое время. Во время этого «загрузки» мой сайт плохо реагирует на ввод пользователя (собирается на другую страницу и т. Д.). Прежде чем кто-нибудь кричит - да, я знаю, это из-за ajax. :)ajax slowing down

Мой вопрос - есть ли способ ограничить пропускную способность ajax? Быстрый сайт - мой приоритет, загрузка данных в фоновом режиме является вторичной.

Итак, если у меня есть javascript, который вызывает php (ajax), а затем php, используя cUrl, получает некоторые данные и возвращает их обратно в javascript (фактический код должен долго размещать его здесь, никто не прочитал бы его наверняка : D) есть ли способ предотвратить блокирование моей страницы до ее завершения?

ответ

1

Вопрос заключается в том, что замедление страницы вниз? Это может быть несколько вещей из описания yoyur.

Несколько вещей, чтобы иметь в виду, с помощью AJAX:

1: большинство браузеров будет делать только два XHR запросов в домене в то же время

2: если результат XHR вызова должен анализируется, и синтаксический анализ тяжелый, например, eval'ing json в старых браузерах, он может иметь эффект замораживания на браузере, в то время как происходит синтаксический анализ данных (js является однопоточным по своей природе, если вы не считаете веб-мастеров в html5)

3: если результат ajax заставляет браузер повторно отображать страницу из-за блокировки dom, рендеринг может замедлиться и заморозить браузер немного в старых браузерах.

4: если у вас есть ограничения пропускной способности, попробуйте запускать XHR следует, когда браузер будет сделано с другими вещами, например, ждать domReady на PageLoad

+0

хорошо, оказывается, что вы прибили его! :) У меня есть только один xhr, но php должен анализировать результаты, а затем отправлять эти результаты в ajax, используя json_encode и javascript, тогда innerHtml-s эти результаты на div :) Страница не фриза, но навсегда требуется открыть какую-либо другую страницу (после того, как пользователь нажмет на ссылку) – johan

+0

Хорошо, что-нибудь еще вам нужно? –

0

Ищите асинхронную загрузку исходных файлов Javascript, надеюсь, вы уже используете асинхронные вызовы XHR. Смотрите отслеживания документации Google Analytics для примера использования:

<script type="text/javascript"> (function() { 
    var ga = document.createElement('script');  
    ga.type = 'text/javascript'; 
    ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' 
      : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s); 
    })(); 
    </script> 

http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html

+0

хорошо, я использую асинхронной GET (если это то, что вы думают) ajax.open («GET», «http ...», true); – johan

+0

а также, проблемный javascript не вызывается в «head», он определен прямо перед вызовом - в нижней части страницы – johan

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