我想知道有没有一种方法可以使用任何现代浏览器的扩展/插件来限制入站连接速度?
我想将速度减慢至 20kbs 左右,只是为了看看加载情况以及其他测试。
有人知道使用任何现代浏览器来完成此任务吗?
编辑(2017-04-09):目前主流浏览器都内置了此功能:
原回复仅供参考,在某些场景下可能还是有用的。
我在某些时候使用过 NetLimiter - 它适用于所有应用程序,并且可以为它们分配单独的带宽限制。
请注意,虽然这对于调制解调器用户来说可能是一个很好的近似值(如果您找到了一些),但它并不能完全显示中国某个地方的用户如何看待您的网站。问题不是带宽太多,而是 ping 时间很长且变化很大(有时会丢失数据包)。不幸的是,我不知道有哪些应用程序能够模拟随机网络延迟和数据包丢失。
截至 2014 年末,chrome 现在已将其直接内置到开发人员工具中。
https://developer.chrome.com/devtools/docs/device-mode#network-conditions
另一种选择是Charles Proxy - 它可以让您模拟慢速网络连接。这种方法与浏览器无关,只需更改浏览器网络配置即可使用 Charles 作为其 Web 代理。
对于 Firefox,您可以使用 FirefoxThrottle。如果您需要测试不同的浏览器,我会选择节流代理。
您可以通过 http://www.webpagetest.org 在
test settings / connection
下进行在线测试
最后,Firefox 还在 DevTools 的响应式设计模式中添加了网络节流控制。在 v.52.x 中可用 https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_Mode#Network_throtdling
您可以将浏览器配置为使用限制速度的隧道代理。例如,在 Node.js 中运行以下服务器
//Node.js 5.12.0
var net = require('net'),
tg = new (require('stream-throttle').ThrottleGroup)({rate: 20*1024});
net.createServer((s) => {
var d = net.connect({ port: *, host: '**' });
s.on('error', () => {}).once('close', () => d.end());
d.on('error', () => {}).once('close', () => s.end());
s.pipe(d).pipe(tg.throttle()).pipe(s);
}).on('error', (err) => {throw err}).listen(8124);
,其中*和**分别是代理服务器的端口和IP地址,将浏览器配置为连接到127.0.0.1,端口8124,会将速度降低到20 KB/s。代理可以是任何支持与浏览器相同协议的远程或本地代理服务器(例如 Squid、Privoxy 或来自 npm 的服务器)。