#.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:
Это поведение будет зависеть от конфигурации вашего веб-сервера. Если у вас есть только один поток, назначенный пулу приложений, то этот поток будет обслуживать каждый запрос.