Я замечал это много раз, и я не знаю, почему это работает так
для этого примера: все написано на asp, включена буферизация, IIS 7, сервер операторского класса, полная оперативная память и процессор
Как видно по захвату, сначала выполняется главная страница, затем вызываются 3 ajax-скрипта, с Jquery.
Мне пришлось вызвать первый перед событием document.ready, чтобы он ответил раньше двух других.
В противном случае, если 3 будут вызваны одновременно, они не получат ответа, пока не завершится выполнение самого медленного из них. Две последние вызываются в document.ready. Мы ясно видим, что 2 начинают реагировать, когда заканчивается выполнение самого медленного. Но самый легкий будет очень быстрым в одиночку, несколько мс.
Это также происходит, когда я загружаю некоторые файлы из приложения. Приложение отправляет файлы, используя метод bynarystream. Когда файл загружается из клиента браузера, приложение не будет отвечать на любой другой запрос браузера (например, я имею в виду другую вкладку), пока загрузка не будет завершена.
Странно то, что вы можете открыть другой браузер (IE, Chrome...), и сервер немедленно ответит на любой запрос, но будет действовать так же для этого нового браузера. Никакие запросы из этого браузера не могут выполняться параллельно.
Я знаю, что ASP старая штука, но может ли кто-нибудь сказать мне, почему она так работает?
Это связано с ограничениями браузера или технологией? из-за сеансового механизма? из-за ИИС? из-за доступа к базе данных (я думаю, что нет, потому что загрузка не требует доступа к БД при потоковой передаче контента)? Будет ли это работать по-другому для других языков и среды?
Могу ли я изменить это поведение? Как ?
Ваше здоровье
Фред