必须先启用safari开发者菜单,再通过network面板节流、network link conditioner全局限速、ios设备联动或charles proxy请求级限速四种方式模拟3g弱网并测试丢包响应。

如果您希望在 Safari 浏览器中模拟 3G 弱网环境以开展前端加载行为与丢包响应测试,但当前 Network 面板中未出现节流选项或限速无效,则可能是开发者菜单未启用、网络检查器未正确调用,或节流配置未在请求发起前激活。以下是实现 Safari 浏览器 3G 弱网节流与丢包加载测试的多种可行路径:
一、启用 Safari 开发者菜单并打开网络检查器
此步骤是所有后续网络调试功能的前提,未启用“开发”菜单将无法访问 Network 面板及节流下拉菜单。必须完成本操作,才能进入弱网模拟流程。
1、启动 Safari 浏览器,点击顶部菜单栏的Safari > 设置(macOS Sequoia 及更新系统)或“偏好设置”(旧版系统)。
2、切换至高级标签页。
3、勾选在菜单栏中显示“开发”菜单(部分系统显示为“显示网页开发者功能”)。
4、关闭设置窗口后,确认顶部菜单栏已出现开发菜单项。
5、在任意网页中按下Option + Command + I快捷键,或通过开发 > 显示 Web 检查器打开检查器面板。
6、点击检查器顶部的网络标签,进入 Network 面板。
二、使用 Network 面板内置节流功能模拟 Slow 3G(仅当前标签页)
该方法直接利用 Safari Web 检查器的 Throttling 下拉菜单施加带宽限制与延迟,适用于快速验证页面在典型 3G 网络下的资源加载表现,但仅影响当前标签页后续发出的新请求,且必须在刷新页面前启用,否则无效。
1、确保已打开 Network 面板,并在面板底部找到Throttling(节流)下拉菜单。
2、从菜单中选择Slow 3G预设(非 No throttling)。
3、勾选禁用缓存(Disable cache)复选框,防止浏览器从内存或磁盘缓存返回资源,干扰节流效果。
4、按下Command + R刷新当前页面(注意:不是启用节流后再刷新,而是节流已开启状态下刷新)。
5、观察每个请求 Waterfall 时间轴中的Stalled与Waiting (TTFB)字段是否明显延长——若二者未增长,说明节流未生效或缓存未清除。
三、通过 macOS Network Link Conditioner 实现全局限速与丢包模拟
该方案由系统级工具提供,可对 Safari 及所有应用统一施加下行/上行带宽限制、往返延迟(RTT)、丢包率等参数,支持真实 3G 场景建模(如 50 KB/s 下载、15 KB/s 上传、200 ms RTT、0.5% 丢包),适用于需覆盖 DNS 查询、TCP 握手、SSL 协商等完整链路的丢包加载测试。
1、确认已安装Xcode 15 或更高版本,并打开 Xcode。
2、进入Xcode > Preferences > Components,下载并安装Additional Tools(含 Network Link Conditioner)。
3、安装完成后,在 macOS 系统设置 > 网络 > 网络调节器中打开该工具(或 Spotlight 搜索“Network Link Conditioner”)。
4、开启Enable开关。
5、点击Manage Profiles… > Add a profile,创建自定义 3G 配置:
- in bandwidth:设为50 KB/s(对应 400 Kbps)
- out bandwidth:设为15 KB/s(对应 120 Kbps)
- in/out packet loss:设为0.5%
- in/out delay:设为200 ms(RTT)
- DNS delay:设为100 ms
6、保存后,在 Profile 列表中选中该配置并确保 Enable 处于开启状态。
四、借助 iOS 设备联动进行真机弱网丢包测试
当需在真实移动 Safari 环境中验证丢包对 JS 执行、图片加载中断、接口重试逻辑的影响时,可启用 iOS 自带 Network Link Conditioner 工具。该方式能精准模拟蜂窝网络丢包与高延迟,且支持针对 cellular 接口单独限速,避免 Wi-Fi 干扰。
1、iOS 设备需已开启开发者模式:进入“设置 > 隐私与安全性 > 开发者模式”,开启并重启设备。
2、连接 iPhone 与 Mac 并信任电脑;打开 Xcode,确保设备识别成功。
3、在 iPhone 上进入设置 > 开发者 > Network Link Conditioner。
4、开启Enable开关。
5、点击Choose a profile…,选择3G预设,或点击Add a profile…手动配置:
- in bandwidth:400 Kbps
- out bandwidth:200 Kbps
- in packet loss:0.5%
- in delay:150 ms
- interface:选择cellular(确保仅蜂窝网络受限)。
6、在 iPhone Safari 中访问目标网页,观察资源加载失败、超时回调、骨架屏触发等行为。
五、使用 Charles Proxy 实现请求级丢包与分路径节流
Charles Proxy 支持按域名、URL 路径、HTTP 方法精细控制节流策略,可单独对 API 接口施加丢包与低带宽,而静态资源走高速通道,适用于验证“接口丢包但图片仍加载”类混合弱网场景,同时支持导出丢包日志用于前端错误归因。
1、从官网下载并安装Charles Proxy 4.7+,启动后记录其默认代理端口(通常为8888)。
2、在 Charles 中进入Proxy > Throttle Settings,勾选Enable Throttling。
3、点击Add Preset新建自定义节流档位:
- Bandwidth (kbps):下行设为300,上行设为150
- Round-trip latency (ms):设为250
- Reliability (%):设为99.5(即丢包率 0.5%)
4、勾选Only for selected hosts,点击Add,输入目标 API 域名(如 api.example.com)。
5、在 macOS 系统设置中,将网络代理设为HTTP:127.0.0.1,端口 8888;Safari 将自动经由 Charles 转发请求。
6、刷新 Safari 页面,查看 Charles 的 Sequence 视图中各请求的Status列是否出现504 Gateway Timeout或Failed to connect,确认丢包生效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











