从同一浏览器同时向Internet Server发出多个请求

时间:2009-07-16 13:09:24

标签: language-agnostic

我有时想知道当您多次提交表单并且互联网服务器处理上一个请求时会发生什么?在任何特殊情况下是否有任何问题?

编辑客户端有任何问题吗?例如,当webserver发送两个响应时?

3 个答案:

答案 0 :(得分:2)

每个表单提交将单独处理,可能并行处理多个。根据您的应用程序,这可能会或可能不会搞砸数据服务器端。如果HTTP连接被丢弃,服务器端脚本可能会停止处理(再次单击“提交”时,第一个请求被取消并发送新请求)。

为避免多次提交出现问题,您可以发送一个唯一的ID,其中包含将在服务器上检查的表单,并且只能使用一次。或者,您可以在用户的​​会话中设置“已处理”标志。或者,您可以使用作业队列并检查用户的作业是否已存在。具体情况取决于您的申请。

Re:“客户端有任何问题吗?例如,当网络服务器发送两个回复时?”

每当您的浏览器发送请求时,它都会建立与服务器的连接,等待响应。新请求,新连接。当您再次单击提交按钮时,将删除第一个连接并建立一个新连接(这也是服务器通常停止处理旧请求的点)。这就是为什么你可以同时在浏览器中加载同一站点的多个页面的原因,它不会混淆哪个响应意味着进入哪个选项卡。

答案 1 :(得分:0)

在电子商务网站上,人们不小心购买了多次,因为他们不耐烦并且在等待(有时很慢)响应之前一直按下提交按钮。

在此类应用程序中按下提交按钮后,最好禁用提交按钮。

答案 2 :(得分:0)

一个不需要在线程之间进行仔细同步或协调的简单解决方案是协调事后发生的过于紧密的操作。用户是否点击了两个广告半秒?不太可能他们实际访问了第一个网站。用户是否每隔一分钟就同一袋货物提交两份订单?可能是个错误。

只要你有办法识别相同的事件,或者甚至“来自同一个人”太近,你就可以使用这种技术。