问题描述
这是我的用例:
我想在静态页面(如 gitlab-pages 或 github-pages)上托管一些我的东西的演示。
所以我不能使用服务器端的技巧来模拟慢速连接。
我的演示页面应该是这样的:
- see my stuff in normal mode
- see my stuff before optimisation with a simulated 56k connection
- see my stuff after optimisation with a simulated 56k connection
我没有找到任何为此构建的 service-worker。
解决方法
tc
或 Traffic Control command 应该能够为您处理这项工作。 tc
可以做很多事情,但听起来您只需要“塑造”流量:
塑造 当流量被整形时,其传输速率受到控制。整形可能不仅仅是降低可用带宽 - 它还用于平滑流量突发以获得更好的网络行为。整形发生在出口处。
模拟单元延迟之类的东西非常容易,在下面的示例中,我在接口 eth1 上注入了 100 +/- 10 毫秒的延迟。
tc qdisc add dev eth1 root netem delay 100ms 10ms
自然这很烦人,因为它位于主接口上并且不处理吞吐量限制。为此,您需要深入了解 tc
的工作原理(父/子队列等)。此 writeup 说明了如何限制带宽,因此如果您这样做并添加上述延迟,那么您应该有一个非常可靠的模拟。