手机打开网站很慢电脑正常,先把手机侧和站点侧分开,再决定查谁。下面的顺序是先换网络,再对比解析、连接和证书,最后比页面体积,再去做多节点复测。每一步都给命令和判断依据,照着做就行。

先分清是哪种情况

现象 先查什么 判断依据 排障提醒
手机流量慢、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,用流量打开同一页面,记下打开用了多久。