我正在微控制器上实现简约的Web服务器应用程序。当我在网页上有多个图像(或CSS / JS)时,浏览器会创建多个连接并获取它们。但微控制器无法赶上这一点。有没有办法告诉浏览器停止流水线操作并逐个获取它们?
注意::“连接:关闭”已经到位。
答案 0 :(得分:2)
我认为Connection:close是完全错误的信息。当浏览器创建多个连接时,它确实不管道化其请求 - 因此ISTM您希望浏览器进行管道传输,而不是创建并行连接。
因此,向前迈出的一步是使用HTTP 1.1,并保持连接打开。然后,浏览器将重用TCP连接以进一步请求。这应该让微控制器赶上来。
现在,浏览器可能仍会尝试创建其他并行连接。对此最好的反应是不接受任何这些连接。因此,限制您所服务的并行连接数(独立于客户端),并且只有在读完之前的请求时才会读取新请求。在这样做时,更愿意通过接受新连接来读取已建立的连接。
如果您可以访问控制器的TCP堆栈,您可能能够告诉连接来自哪个主机,因此您可以接受来自其他浏览器的连接,同时限制来自同一浏览器的连接数(您可以在常规套接字API中无法做到。)
答案 1 :(得分:2)
“流水线”是别的东西;这意味着用户代理在同一连接上发送了其他请求,尽管第一个请求尚未完成(请参阅http://greenbytes.de/tech/webdav/rfc2616.html#pipelining)。
“连接:关闭”似乎不相关;话虽如此:你有没有理由不想重复使用连接?
关于你的问题:不,我认为你不能阻止客户这样做。您是否尝试限制服务器上的最大打开连接数?
答案 2 :(得分:1)
同样的问题......然而,与Opera不同,Firefox加载我的网站非常快。我没有发明任何比在初始阶段拒绝连接更好的东西:SYN。我只是回答RST标志。但可能它不适合Opera。 我的设备仅支持两个同时连接。