第8.1.2.2节流水线说:
“服务器必须以接收请求的相同顺序发送对请求的响应”。
因此,我想,如果我从浏览器发出多个AJAX请求,它们仍将按照服务器接收到的顺序进行处理。
但是后来,我从Alex Maccaw 读了这篇文章,他说:
“最后一个问题是并行发送的Ajax请求。如果用户创建一条记录,然后立即更新同一条记录,则将同时发送两个Ajax请求,即POST和PUT。但是,如果服务器在“创建”请求之前处理了“更新”请求,它会发疯,它不知道需要更新哪些记录,因为尚未创建记录。
解决方案是通过管道处理Ajax请求,以串行方式传输它们。Spine默认情况下会执行此操作,排队POST,PUT和DELETE
Ajax请求,以便一次发送一个。仅在前一个请求成功返回之后才发送下一个请求。”
因此,如何以编程方式创建Alex Maccaw提到的方案?
简而言之,您的问题的答案是“是”。
HTTP
1.1并不禁止打开与同一服务器的多个TCP连接(实际上建议两个),并且所有现代浏览器都这样做(实际上,大多数浏览器都支持六个或更多)。看到浏览器中的最大并行http连接数?。每个连接上都可能正在进行请求-响应周期,并且出于各种原因,某些请求-响应周期可能比其他请求快得多。网络拥塞,请求的复杂性,处理您的请求的特定“工作人员”的速度和负载等。这意味着,稍后开始的请求的请求-
响应周期可能比请求开始的周期更早地完成。较早。
“服务器必须以接收请求的相同顺序发送对请求的响应”。
该语句仅适用于流水线多个http请求,即通过一个TCP连接发送多个请求,而无需等待每个请求的响应。它不适用于打开与同一服务器的多个TCP连接。
通常,每个tcp连接只有一个请求同时进行。客户端等待响应,当客户端获得响应时,也许可以将连接重用于新请求。因此,就常规的(非流水线的)http而言,甚至没有“响应顺序”的概念,因为TCP连接上只有一个请求-
响应周期。
通过管道传输,可以在一个TCP连接上触发多个http请求。顺序返回响应很重要,因为这是响应与原始请求匹配的方式。(对请求的匹配响应可能以不同的方式完成,例如,通过在每个响应上提供完整请求的哈希值来实现,但这并不重要)。
另外,很高兴知道(默认)对HTTP管道的支持并不广泛。Chromium项目不愿意启用它:https : //insouciant.org/tech/status-of-http-
pipelining-in-chromium/。Firefox仍未启用它。https://bugzilla.mozilla.org/show_bug.cgi?id=264354
另一方面,Apple已在IOS5的safari中启用了对它的支持,这可能是因为移动设备上的请求响应延迟是一个更大的问题。http://www.guypo.com/mobile/ios5-top10-performance-
changes/
Android股票浏览器也可以。至少是Chrome之前的版本。http://www.guypo.com/mobile/http-pipelining-
big-in-mobile/
Alex Maccaw在有关Spine的帖子中写道:
解决方案是通过管道处理Ajax请求,以串行方式传输它们。
在这种情况下,我认为管道一词有些令人困惑。首先,Spine所做的“管道传输”与在HTTP中对请求进行管道传输的可能性完全不同。其次,我认为我将Spine请求排队的这一特殊功能称为“排队”。Spine对请求进行排队,并按添加顺序处理队列中的项目。
总的来说,我认为“流水线”一词最适合用于有目的的制造,而“排队”则最好用于有目的的制造(以防止竞争状况或减轻排队项目的处理器的负担)。 , 例如)。
在SSO实现中,在验证用户后,我创建了一个SAMLResponse对象,并使用IdentityProvider将其发布到默认登录URL。sendSamlResponseByHttpSt()方法。 身份提供程序。SendSamlResponseByHttpost(响应,strAssertionConsumerServiceURL,SamlRespossExml,relayState); SAML请求
我正在尝试使用Postman,chrome扩展api客户端Postman通过http访问Dynamodb。这实际上是我在《Dynamodb应用设计模式》一书中读到的一种方法。似乎我做错了什么,因为我无法成功地验证和访问web服务。 我在Postman客户端中使用的url和标题以及我最近的请求参数和错误消息如下: 我的请求是: 我得到以下错误消息: {uuu type:“com.amazon.cor
我计划开发一个基于web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP,并将它们发送到XMPP服务器。 在这种基于聊天的应用程序中使用WebSocket看起来很有希望,因为事件(或响应)可以异步传递。但是,如果我使用WebSocket作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是的话,URI、动词(GET、POST…)是怎样的,websocket消息中
问题内容: 是否可以构建一个HelloWorld.lib并使用JNI将其加载到Java应用程序中?还是仅适用于共享库? 我在JNI文档中找不到明确的答案,没有引用“静态库”。 问题答案: 它必须是一个动态库。幸运的是,您可以从静态库中构建一个动态库。
我是docker的新手,我在docker-compose文件中编写了一个Web服务和Web中使用的其他服务。我想知道是否可以通过container_name访问Web服务的服务(例如api服务)。如超文本传输协议://container_name: 8080。Container_name在docker-compose文件中指定,docker容器上的Web服务可以通过http://localhost