Несколько запросов к интернет-серверу одновременно из одного браузера - PullRequest
0 голосов
/ 16 июля 2009

Мне иногда интересно, что происходит, когда вы отправляете форму несколько раз, и интернет-сервер обрабатывает предыдущий запрос? Есть ли проблемы, которые могут быть вызваны каким-либо особым условием?

Редактировать Есть проблемы на стороне клиента? например, когда веб-сервер отправляет два ответа?

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Каждая отправленная форма будет обрабатываться отдельно, возможно, многие параллельно. В зависимости от вашего приложения это может или не может испортить данные на стороне сервера. Сценарий на стороне сервера может прекратить обработку, если HTTP-соединение будет сброшено (после повторного нажатия кнопки «Отправить» первый запрос отменяется и отправляется новый запрос).

Чтобы избежать проблем с несколькими отправками, вы можете, например, отправить уникальный идентификатор с формой, которая будет проверена на сервере и может использоваться только один раз. Или вы можете установить флаг "уже обрабатывает" в сеансе пользователя. Или вы можете работать с очередями заданий и проверять, существует ли уже задание для пользователя. Особенности будут зависеть от вашего приложения.

Re: «Есть ли проблемы на стороне клиента? Например, когда веб-сервер отправляет два ответа?»

Каждый раз, когда ваш браузер отправляет запрос, он устанавливает соединение с сервером, на котором он будет ожидать ответа. Новый запрос, новое соединение. Когда вы нажимаете кнопку отправки еще раз, первое соединение прерывается и устанавливается новое (это также точка, на которой сервер обычно прекращает обработку старого запроса). Вот почему вы можете загружать несколько страниц одного и того же сайта в браузер одновременно, и не будет запутано, какой ответ предназначен для перехода на какую вкладку.

0 голосов
/ 17 июля 2009

Одним из простых решений, которое не требует тщательной синхронизации или координации между потоками, является согласование действий, которые произошли слишком близко друг к другу после факта. Пользователь нажимал на две рекламы с интервалом в полсекунды? Вряд ли они действительно посетили первый сайт. Пользователь отправлял два заказа на одну и ту же сумку товара в минуту? Вероятно, ошибка.

Пока у вас есть способ идентифицировать идентичные события или даже "от одного и того же человека" слишком близко друг к другу, вы можете использовать эту технику.

0 голосов
/ 16 июля 2009

На сайтах электронной коммерции люди случайно покупали несколько раз, потому что были нетерпеливы и продолжали нажимать кнопку отправки, прежде чем ждать (иногда медленный) ответа.

Рекомендуется отключить кнопку отправки после ее нажатия в приложении такого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...