Почему при переходе на другую страницу, она не загружается до тех пор, пока не будут завершены ajax запросы на текущей странице?

Добрый вечер!

Суть проблемы такова:
Если находясь на странице (к примеру на главной), на которой выполняются длительные ajax-запросы (15-20 секунд) попытаться перейти на другую страницу, то она не будет загружена до тех пор, пока не завершатся ajax-запросы. Даже если попытаться открыть страницу в другом табе, она не будет загружена сразу.

Мне не понятно почему так проиходит и как обойти это ограничение.
Установил опытным путем, что во время выполнения эти запросов. страницы из другого браузера открываются.

Вопросы на которые я хотел был получить ответы или направления куда рыть.
1. Почему браузер ждет пока выполнятся ajax-запросы и только после их выполнения обрабатывает другие? Ведь одновременно к серверу возможно сделать несколько подключенией.
2. Возможно существую какие-то настройки php, apache для обхода этих ограничений?
  • Вопрос задан
  • 832 просмотра
Решения вопроса 1
Это не браузер ждёт ответа, а сервер не отвечает.
Скрипт к которому ты обращаешься с помощью AJAX блокирует сессию до завершения своей работы.
Вот решение твоей проблемы.
konrness.com/php5/how-to-prevent-blocking-php-requests
epsiloncool.ru/programmirovanie/php/zavisanie-skri...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@entermix
Возможно запросы выполняются в синхронном режиме?

Асинхронный запрос:
Запрос, ответ которого обрабатывается в любой момент выполнения скрипта или приложения называется асинхронным, т.к. является по своей сути отдельным потоком данных, не влияущий и не задерживающий другие процедуры.

Синхронный запрос:
Ну тут все понятно, синхронный запрос - обратный по смыслу асинхронного.

www.rsa-team.ru/forum?theme=sinhronnie_i_asinhronn...
Ответ написан
Комментировать
65536
@65536
сессии лочат. если в с крипте есть session_start, то он открывает файл сессии, и пока не закроет, другой экземпляр этого скрипта или другой скрипт не сможет его открыть, поэтому запросы встают в очередь. добро пожаловать в организацию сессий своими руками. не рекомендую связываться с session_set_save_handler. самый нормальный вариант выдавать браузеру куку с ключем и по нему хранить отдельные независимые части данных сессии в базе, обязательно так чтоб при асинхронщине они не разрушились, это уже ваша радача. стандартные сессии как раз от этого и защищают своим тупняком
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы