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

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

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

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

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

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

Крис

2 ответа

Это зависит от браузера. В то время как большинство современных браузеров допускают около 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

Почему бы вам не загрузить этот трудоемкий 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, но только после загрузки веб-сайта.

Другие вопросы по тегам