Запросы Ajax обслуживаются одним серверным потоком?

#.net #asp.net #ajax

#.net #asp.net #ajax

Вопрос:

Я создал простой фреймворк ajax на http://www.iqp.vn и я разрешаю пользователям отправлять много запросов ajax или отменять их.

Но из тестирования я вижу, что, когда пользователь отправляет ajax-запрос, который выполняет что-то, что занимает много времени, например копирование / запись большого текстового файла, последующие запросы будут ждать, пока не будет выполнен первый, прежде чем они будут выполнены. На клиенте я вижу, что второй запрос, хотя он выполняет очень быструю обработку, всегда возвращается после выполнения первого «большого» запроса.

Я также использую отправку в скрытой форме (iframe), чтобы разрешить пользователю загружать файлы в стиле ajax, и когда пользователь загружает большой файл и отменяет запрос (== сбрасывает iframe на клиенте) и нажимает, чтобы сгенерировать другой запрос, я вижу, что последующий запрос всегда ожидает завершения первого запроса на загрузку.

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

Комментарии:

1. Пожалуйста, опубликуйте часть вашего кода, чтобы помочь получить ответ….

2. Я опубликую свой код после некоторого рефакторинга позже

3. Возможно, когда я обнаружил эту проблему, моя сеть была слишком плохой, теперь она работает так, как ожидалось. Большое вам спасибо за вашу помощь.

Ответ №1:

Запросы Ajax обрабатываются как обычные запросы. Вы должны проверить:

  • Ожидает ли вызов ajax завершения другого перед вызовом (на стороне клиента)?
  • Реализуете ли вы какой-либо механизм блокировки на сервере?
  • Может быть, все потоки в пуле потоков заняты другими запросами

Просто для справки, этот плагин jQuery может загружать много файлов одновременно: http://aquantum-demo.appspot.com/file-upload

Комментарии:

1. Я выполняю вызовы ajax независимо, без ожидания на стороне клиента. На сервере нет блокировок, мой сайт новый, поэтому он не может быть перегружен. Мой код загрузки (iframe и скрытая форма) похож на плагин jquery ajax form. Я думал, что каждый веб-запрос обслуживается новым потоком, поэтому запрос на загрузку не может блокировать другие запросы. ссылка для загрузки если вы загружаете файл здесь, затем немедленно прерываете его, нажав на кнопку с красным крестиком, затем нажмите на ссылку, чтобы загрузить что-либо, это будет заблокировано запросом на загрузку 🙁

Ответ №2:

Это поведение будет зависеть от конфигурации вашего веб-сервера. Если у вас есть только один поток, назначенный пулу приложений, то этот поток будет обслуживать каждый запрос.