手机打开网站很慢电脑正常:按五步顺序查
手机打开网站很慢电脑正常,先把手机侧和站点侧分开,再决定查谁。下面的顺序是先换网络,再对比解析、连接和证书,最后比页面体积,再去做多节点复测。每一步都给命令和判断依据,照着做就行。
先分清是哪种情况
| 现象 | 先查什么 | 判断依据 | 排障提醒 |
|---|---|---|---|
| 手机流量慢、WiFi 正常 | 运营商出口 | 换网络后差别明显 | 先别动站点 |
| 两种网络都慢、电脑正常 | 解析或证书 | 电脑侧对比解析与证书 | 别先改图片 |
| 只有微信里慢 | 内置浏览器 | 系统浏览器对比 | 我这边没有样本,只能给方法 |
| 手机和电脑都慢 | 站点本身 | 两边同一命令结果接近 | 先看服务端 |
| 页面能开但图片慢慢出 | 资源体积 | 手机 UA 与桌面 UA 的体积差 | 先看首屏图 |
怎么查
任一步出现明确异常,先停在那一步;五步都正常再去做多节点复测。
第一步:换网络
手机关掉 WiFi,用流量打开同一页面,再反过来用 WiFi 打开一次。
两次差别明显,先查运营商出口;两次一样慢,往下走。
WiFi 带认证页或代理时,这一步跳过,直接看解析。
第二步:对比解析
电脑上跑两条:
`` dig @223.5.5.5 你的域名 A +short dig @119.29.29.29 你的域名 A +short ``
正常:两条返回同一组 IP。异常:返回空、返回旧 IP,或两边不一致。
这一步别超过三分钟,解析没问题就往下。
第三步:看四个时间点
`` curl -o /dev/null -s -w '%{http_code} %{time_namelookup} %{time_connect} %{time_appconnect} %{time_starttransfer}\n' https://你的域名 ``
正常:状态码 200,四个数值都在几十毫秒量级,具体以你的业务基线为准。
异常:time_connect 接近超时值,或 time_appconnect 明显大于 time_connect。
第四步:看证书链
`` openssl s_client -connect 你的域名:443 -servername 你的域名 ``
正常:Verify return code: 0 (ok)。
异常:unable to get local issuer certificate,说明中间证书没给全。
第五步:比手机和桌面的页面体积
`` curl -s -A 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)' -o /dev/null -w '%{size_download}\n' https://你的域名 ``
再用桌面 UA 跑一次。两个数差很多,说明按 UA 返回了不同页面,手机拿到的是重的那份。
这些边界我还没验证
内置浏览器(微信、QQ)和系统浏览器的差异,我手上没有可比样本。
手机省电模式、4G/5G 出口的限速策略,我只在文档里见过,没在生产上验证。
同一 WiFi 下不同手机差别很大,这条我没拿到足够样本,判断不了是不是机型相关。
用多节点复测确认范围
单点只能证明一条线路。用宝塔拨测的网站测速跑多地区多运营商节点,看状态码、DNS、TCP、TLS、TTFB、下载五段,再按运营商分组。某一组全慢,问题就在那一路。
我现在会这么做
1. 关 WiFi 用流量开一次,再反向开一次。 2. 电脑上对比两个公共 DNS 的解析结果。 3. curl 一次,记下状态码和四个时间点。 4. 看证书链的验证码。 5. 换手机 UA 再测一次下载体积。 6. 多节点复测,按运营商和地区分组。
不要一上来就改图片、砍脚本,也不要先重启服务器。这两件事的代价都是停机或返工,而上面六步都不断线。
现在先做第 1 步:手机关掉 WiFi,用流量打开同一页面,记下打开用了多久。