- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我无法理解 SPDY 如何解决 HOL 阻塞问题。
引自:http://chimera.labs.oreilly.com/books/1230000000545/ch02.html#TCP_HOL
To understand why that is the case, recall that every TCP packet carries a unique sequence number when put on the wire, and the data must be passed to the receiver in-order (Figure 2-8). If one of the packets is lost en route to the receiver, then all subsequent packets must be held in the receiver’s TCP buffer until the lost packet is retransmitted and arrives at the receiver. Because this work is done within the TCP layer, our application has no visibility into the TCP retransmissions or the queued packet buffers, and must wait for the full sequence before it is able to access the data. Instead, it simply sees a delivery delay when it tries to read the data from the socket. This effect is known as TCP head-of-line (HOL) blocking.
所以 HOL 阻塞的存在是因为 TCP 保证了按顺序交付。但是here用户 igrigorik 说 SPDY 允许数据包以不同的顺序出现。但 SPDY 不只是 HTTP 的替代品吗?这意味着它仍然通过 TCP 运行(来自 here )。
最佳答案
HOLB有多种原因,包重传是其中之一,但与HTTP和SPDY无关。与 HTTP 和 SPDY 相关的是在 HTTP 1.x 中必须按顺序响应多个请求这一事实。
想象一个 HTTP 客户端通过同一个 TCP 连接向服务器发送 2 个请求,并且第一个响应的内容长度“大”,而第二个响应的内容长度“小”。
由于 HTTP 1.x 协议(protocol)的性质,第二个响应必须等待第一个响应完成。第二个响应被第一个响应阻塞。
相反,对于像 SPDY 和 HTTP 2 这样的多路复用协议(protocol),这种类型的 HOLB 不存在,因为第二个“小”响应可以在第一个“大”响应之前到达客户端(它们甚至可以交错)。
question you referenced above 的示意图以图形方式解释。
Ilya 在他的回应中,当他说 HTTP“数据包”可能是无序的时,他指的不是 TCP 数据包,而是 HTTP“数据包”。想象一个由 HTTP header 组成的“数据包”,以及一个由要上传到服务器的 POST 数据组成的“数据包”(或者,在响应中,由要下载到客户端的数据组成的“数据包”)。在 HTTP 1.x 中,这些 HTTP“数据包”必须是有序的(首先是请求 1 的所有 HTTP“数据包”,然后是请求 2 的所有 HTTP“数据包”;或者首先是所有 HTTP响应 1 的“数据包”,然后是响应 2 的所有 HTTP“数据包”),而在 SPDY 和 HTTP 2 中,它们可能是乱序的,甚至是交错的。
SPDY 和 HTTP 2 中缺少这种 HOLB 使得这些协议(protocol)比 HTTP 1.x 更高效。
由 TCP 重传引起的 HOLB 会影响任何基于 TCP 的协议(protocol),包括 SPDY 和 HTTP 2 等多路复用协议(protocol),以及 HTTP 1.x 等双工协议(protocol)。
关于networking - SPDY 线头阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221954/
如果我在我的服务器上添加对 spdy/3 的支持,而我的用户在他们的浏览器中只有 spdy/2,会发生什么? 协议(protocol)会优雅地降级到 spdy/2 还是只会使用普通的 https? 最
阅读 SPDY 白皮书 http://dev.chromium.org/spdy/spdy-whitepaper ,似乎支持它会改善我的 HTTP 延迟。但是,我不清楚其中的一些说法。 1) “因为
左边是普通 HTTPS 加载,右边是 SPDY 加载。是不是很神奇? SPDY 是什么 ? SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 S
大多数浏览器都支持 HTTP/2,一些服务器也支持。 例如,Akamai 提供了一个 HTTP/2 测试页 (https://http2.akamai.com/)。当我在 chrome 中访问此页面并
我正在尝试SPDY for iOS应用程序,该应用程序当前使用AFNetworking(2.1.0)处理HTTP请求。服务器端,我正在使用SPDY友好的Google App Engine(已通过SPD
在这里,我使用术语捆绑来指代将 JS 和 CSS 资源连接在一起以减少 HTTP 请求的数量。 HTTP/2 首先解决了产生资源捆绑 Web 开发最佳实践的底层问题(往返时间、资源获取阻塞)。但是,现
是否有网站可以测试您的浏览器是否支持 SPDY 并配置为最佳性能? 如果没有,也许我们应该创建一个? 最佳答案 有一个网站叫做 http://spdytest.com/但由于维护,目前已关闭。 支持的
我知道 NginX SPDY 支持仍在开发中。是否已经有支持它的开源负载均衡器? 最佳答案 与 mod_spdy您可以在 Apache 中获得 SPDY 支持,并且 Apache 可以充当负载均衡器。
我只是不明白:我只是使用普通的 SPDY 服务器 (node-spdy),我没有定义任何特殊的 header ,如 Content-Encoding 或类似的东西,我不不要手动压缩我的内容。 我的问题
我想知道如何在 Google Chrome 中使用 SPDY 协议(protocol)自动禁用。我需要进行一些与 IDS 相关的测试,为此我想使用 HTTP SSL 而不是 SPDY 临时访问 Twi
有没有办法检测网站是否使用 SPDY 与 Chrome 通信? 最佳答案 您可以通过向上拉来查看当前版本的 Chrome 中的事件 SPDY session : chrome://net-intern
我无法理解 SPDY 如何解决 HOL 阻塞问题。 引自:http://chimera.labs.oreilly.com/books/1230000000545/ch02.html#TCP_HOL T
有什么方法可以检测远程网站是否支持 SPDY 以及它是什么版本? 我可以从命令行使用的东西,比如 bash 脚本。 尝试使用 curl 发送自定义 User-Agent header ,但无法获得任何
有没有人开发过开源的 SPDY 代理? 我无法通过 Google 找到一个,但我相信 Amazon Silk 浏览器使用了一个? 最佳答案 我写了名为 shrpx 的 SPDY 反向代理在 C/C++
我知道 Cowboy 能够处理 SPDY 协议(protocol)(虽然不是 HTTP2)。 但是,查看 Phoenix 框架源代码,我只看到 http 和 https 调用。 SPDY 是否被忽略?
因此,我们为 SSL 请求/响应运行了 nginx + spdy。 一切都很好。 不幸的是,此时 spdy 只是 SSL。 现在,我们的服务相当重 ajax。 我们可以选择快速进行所需的更改,以便将请
Tomcat 8 提供了对 SPDY 协议(protocol)的实验性支持,根据这些来源:Tomcat 的 Wiki , API docs , version 8.0.0 changelog . 我知
我有一个关于 SPDY/HTTP2 的问题:通常您将多个 CSS 和 JS 文件连接到一个文件中以节省请求并获得更好的性能。我听说 SPDY/HTTP2 将多个请求合并为一个响应。这是否意味着我不再需
我正在尝试在 Web 浏览器控件 (Internet Explorer 11/WIN 8.1) 上启用 SPDY。在 Internet Explorer 高级设置和注册表中,EnableSPDY3_0
我创建了一个使用 SPDY 的网络服务器。我想在 SPDY 下对我的 Web 服务器进行基准测试,并将结果与标准 TCP/HTTP 协议(protocol)进行比较。在 SPDY 下,是否有任何工
我是一名优秀的程序员,十分优秀!