【问题标题】:How to slow down a service-worker to simulate 56k or 2G 3G slow connection如何减慢服务人员的速度以模拟 56k 或 2G 3G 慢速连接
【发布时间】:2020-12-28 23:22:27
【问题描述】:

这是我的用例:

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

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

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

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

我没有找到任何为此构建的服务人员。

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

【问题讨论】:

    标签: network-programming service-worker simulator demo


    【解决方案1】:

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

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

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

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

    这自然很烦人,因为它位于主接口上,并且不处理吞吐量限制。为此,您需要了解tc 的更多工作方式(父/子队列等)。这个writeup 解释了如何限制带宽,所以如果你这样做然后添加上面提到的延迟,那么你应该有一个非常可靠的仿真。

    【讨论】:

    • 如果我的用例是作为开发者的调试/测试用例,是的,它会像许多其他工具一样完成工作(包括在现代浏览器或代理中,我在 stackoverflow 中发现了很多东西)。但是我的用例是让最终用户只需单击不同的链接来测试我的工具的性能,当将所有这些都托管在 github-pages 或 gitlab-pages 等静态主机上时。我真的认为这可以通过 service-worker 来完成,但我不知道如何。
    • 服务工作者可能无法访问套接字选项,因此任何模拟都将在 OSI 4+ 层。即使您没有发送数据包来模拟延迟或节流,操作系统 TCP 堆栈也会发送控制数据包以保持链接正常/正常。通常代理将位于第 4 层,并且可以尝试模拟更多。 tc 在操作系统级别运行,可为您提供真正使单元链接独一无二的第 2-3 层控制。因此,正如我之前提到的,即使您认为您正在与服务人员进行模拟,在引擎盖下它也不会看起来像一个单元链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 2012-08-17
    • 2018-02-13
    • 2011-01-19
    • 2017-09-23
    • 2013-12-30
    相关资源
    最近更新 更多