如何减慢 service-worker 以模拟 56k 或 2G 3G 慢速连接

问题描述

这是我的用例:

我正在为他们开发静态站点生成器和其他东西。

我想在静态页面(如 gitlab-pages 或 github-pages)上托管一些我的东西的演示。

所以我不能使用服务器端的技巧来模拟慢速连接。

我的演示页面应该是这样的:

我没有找到任何为此构建的 service-worker。

知道在哪里可以找到一个或如何为此构建一个吗?

解决方法

tcTraffic Control command 应该能够为您处理这项工作。 tc 可以做很多事情,但听起来您只需要“塑造”流量:

塑造 当流量被整形时,其传输速率受到控制。整形可能不仅仅是降低可用带宽 - 它还用于平滑流量突发以获得更好的网络行为。整形发生在出口处。

模拟单元延迟之类的东西非常容易,在下面的示例中,我在接口 eth1 上注入了 100 +/- 10 毫秒的延迟。

tc qdisc add dev eth1 root netem delay 100ms 10ms

自然这很烦人,因为它位于主接口上并且不处理吞吐量限制。为此,您需要深入了解 tc 的工作原理(父/子队列等)。此 writeup 说明了如何限制带宽,因此如果您这样做并添加上述延迟,那么您应该有一个非常可靠的模拟。