Назад | Перейти на главную страницу

Загрузка сайта до завершения первоначального скрипта

У меня есть часто используемый сервер (работает plesk).

У меня есть несколько длинных скриптов, обработка которых требует времени (огромная база данных mysql). Я нашел тогда в 1 браузере, я запускаю скрипт, и пока он загружается, я не могу просматривать другие части сайта, пока скрипт не завершится, кажется, что все запросы уходят, но они не обслуживаются до начальной сценарий заканчивается.

Я думал, что это проблема всего сервера, но это не так. Если я использую другой компьютер, я могу нормально просматривать сайт, даже на том же компьютере с другим браузером я могу нормально перемещаться, пока скрипт все еще загружается. Я думаю, что это сильно ограничивает количество запросов за сеанс.

Это верно? Есть ли способ настроить это, чтобы разрешить 2-3 других запроса за сеанс?

Это действительно плохо, что когда я разговариваю с клиентом по телефону, я только что запустил длинный отчет, но не могу использовать сайт или следить за тем, что они говорят, пока страница не загрузится?

Крис

Почему бы вам не загрузить этот трудоемкий SQL через запрос типа AJAX после загрузки страницы.

 <BODY onLoad="ajax_request_for_large_query();">

    <script type="text/javascript">

    function ajax_request_for_large_query() {

      document.getElementById(‘mydiv’)= "Loading....";        

      if (window.XMLHttpRequest) { // Mozilla, Safari, IE7...
          http_request = new XMLHttpRequest(); 
      } else if (window.ActiveXObject) { // IE6 and older
          http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      http_request.onreadystatechange = Contents; 
      http_request.open(‘GET’, 'test.html', true); 
      http_request.send(null);

    }

    function Contents() { 
      if (http_request.readyState == 4) {
          if (http_request.status == 200) {
               document.getElementById(‘mydiv’)= http_request.responseText;
          } else {
              alert(‘There was a problem with the request.’);
          }
      } 
    }

    </script>

Это не работает, но что-то в этом роде.

Функция javascript извлекает данные из запрошенного URL-адреса, который выполняет ваш огромный запрос и возвращает результат, после которого обновляется div в html, но только после загрузки веб-сайта.

Это зависит от браузера. В то время как большинство современных браузеров допускают около 6 одновременных подключений HTTP 1.1, старые браузеры допускали только два. Пожалуйста, укажите используемый вами браузер.

  • Если вы используете IE, см. http://support.microsoft.com/kb/183110).
  • Если вы используете Firefox, перейдите в «about: config» и установите значение «network.http.max-persistent-connections-per-server» или, возможно, даже «network.http.max-connections-per-server»

Если вы можете изменить веб-страницу: Часто помогает изменить порядок сценариев и изображений. Вот хорошая ссылка, объясняющая концепцию: http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts