gpt4 book ai didi

http - 在发送响应之前测量 goodput

转载 作者:可可西里 更新时间:2023-11-01 02:34:12 24 4
gpt4 key购买 nike

我的想法是让在较慢连接上工作的 Web 应用程序可以回退到替代的较小 Assets 版本(如图像、视频等)。 HTTP Live Streaming 具有类似的行为,但适用于视频流。

起初我以为,这可以通过使用 HTTP/2 服务器推送来实现。 Web 服务器将发送响应、测量有效输出并在关闭连接之前推送适当的 Assets 版本。但这会消除服务器推送的优势,因为客户端只有在收到页面主体后才能开始下载 Assets 。由于 Assets 不像流那样提供,因此服务器应在将 HTTP 响应发送到客户端之前检测有效输入。

我还想检查是否可以从 TCP 堆栈获取吞吐量,例如来自慢启动的值。但我想它只有在发送响应时才可用。

有人知道 Web 服务器如何在发送响应之前测量有效吞吐量吗?

最佳答案

可能还有其他情况,但我可以冒险回答服务器第一次看到客户端的情况。

当TCP连接建立时,服务器的操作系统基本上有一个数据点,由ACK包给出。我不认为用一个数据点或实际吞吐量来衡量网络吞吐量真的是不可能的。并且将这些数据包与原始套接字相交,无法在应用程序中查看它们的时间。

然后您进行了 TLS 握手。对于那个,可以观察发送和接收包的粗略时间。我说粗略是因为一旦它们在操作系统缓冲区中,应用程序内部就无法知道它们何时实际放入线路中。然后这些延迟与吞吐量没有直接关系。

尽管如此,我认为您的想法是可行的,因为浏览器在获取大量其他内容(.html 本身、.css、javascript 甚至网络字体)之后很久就开始获取图像数据,通常已经摆脱了缓慢的状态开始。在那个时间点,可能有机会收集足够的统计数据来建立生产率估计。使用 HTTP/2,如果你想确定的话,你可以稍微延迟发送数据....

但是,我建议不要将两个不同的实时 Assets 与同一个 URL 相关联,在这种情况下您必须这样做。试想一下:用户首先在连接不良的情况下获取图像,图像被缓存。下次用户从家中的扩展坞连接时,会向他显示缓存的图像。丑陋的!但是 Web 应用程序可以在请求 Assets 之前向服务器查询一些网络有效输出统计数据(看到了吗?不需要使用 PUSH)。我想这对视频特别有效。

对于图像,您可以简单地使用隔行/逐行 PNG 或 JPEG。我们are just building something进入Shimmercat控制各个隔行扫描 block 的优先级。这个可能会用到push....

关于http - 在发送响应之前测量 goodput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com