站长圈暗涌的外网新动向,90%人尚未察觉的技术拐点
|
V2EX 这两天刷到三个帖子,标题带“外网”俩字,全在问 CDN 回源策略调优。我划过去,手停了两秒——不是因为答案不对,是发现没人提那个事。去年四月我们整套前端基建崩在凌晨三点十七分,监控里看不到 504,只有一堆 200 里裹着三十秒 TTFB。我原以为是 LB 某个节点抽风,结果查到第七层,发现 upstream 已经切到了新域名,而那个域名解析 TTL 被某人设成六小时,但递归 DNS 刚好卡在某个 ISP 的缓存过期边缘…… 桌上排成一排的测试机,从左到右是 iOS 16.5、Android 13、鸿蒙 4.2、iPadOS 17.1、还有一个贴着胶布的旧 iPad mini,屏幕裂了三条缝。它们同时开着同一个灰度页,加载条走一半就卡住。我没碰键盘,就盯着那五根进度条,三根慢得像生锈齿轮,两根突然跳完。凉了的外卖在右手边,塑料盒盖子翘起一条缝,里面青椒肉丝表面浮着一层淡黄油膜。 站长圈现在还在用“外网质量”这个词,跟十年前一样。但去年四月之后,我删掉了所有监控告警里的“外网链路”大类标签。不是不报,是报了没用。你告警“TCP 握手超时”,可真正出事那天,Wireshark 抓包显示三次握手全成功,SYN-ACK 响应延迟十八秒——不是丢包,是中间某个城域网设备在做深度包检测,把 TLS Client Hello 当成了可疑流量,排队等策略引擎判决。判决花了十七秒。这个我敢打包票。 产品经理那句“就这么点东西”是在四月二号下午说的,当时他拿着一页纸,画了个带圆角的灰色方块,说这是新 H5 的首屏骨架。我没接话,转身去调了 WPT 的历史数据,发现那个月上海电信出口的 HTTP/2 头部压缩命中率掉了一半,但 nobody 在意。我们还在埋首优化 SVG Sprite 图标尺寸,像中世纪抄经僧在羊皮纸上校对《以赛亚书》第十一节,而窗外城墙已经被火炮轰开第二道缺口。
文章配图,仅供参考 优胜劣汰?不是形容词,是动词。上个月有个客户找我复盘他们家海外站崩溃,说流量涨了三倍,首页直降 90%。我让他打开浏览器开发者工具 Network 面板,把“Disable cache”勾去掉,再清一次 DNS 缓存。他照做了,页面回来了。不是修复,是绕开。那个站点用的是某个小版本的 Next.js,SSR 渲染时会发一个带空 referer 的 preconnect,结果被某个中东 ISP 的安全网关当成反射型攻击前奏,主动断连。这玩意儿连 Cloudflare dashboard 里都看不到日志——它根本没进 Cloudflare。 UI 走查时的沉默。那是上周三,设计同学把新落地页的暗色模式稿投在会议室大屏上,灯光调到最暗,所有人盯着那个渐变灰背景。我说了一句“这对比度够呛”,没人应。后来才知道她用的不是系统原生暗色,而是手写 media query 加了 hue-rotate(-5deg),导致在 macOS 14.4 + Safari 17.4 下,Webkit 的 color correction 管线误判为非标准色彩空间,自动插入一个隐式 CMS 转换层,帧率直接从六十掉到二十二。这个我说不准,但看到 performance timeline 里 layout 强制同步触发三次,我就知道不能碰了。 地铁上掏手机复现这事干过两次。一次是早高峰,在二号线人民广场站下车前,用自己手机开开发者工具远程调试同事的测试机——那台 Android 设备连着公司 Wi-Fi,我在地下通道里用 5G;另一次是晚归,在龙阳路换乘通道拐角,蹲着连 USB Debugging,试了七次才让页面在离线态下正确触发 service worker 的 fallback。两次都跟“外网”无关,两次都卡在 DNS over HTTPS 的兜底失败路径里:DoH 解析成功,但系统级 resolv.conf 还在往老 DNS 发请求,结果并行返回两个 A 记录,前端 fetch 取了那个 TTL 剩三分钟的,后端 API 却走了那个 TTL 已过期的 IP 地址。中间谁也没错,错在“TTL 过期”这件事,现在已经不等于“记录失效”。 所以别跟我聊“技术拐点”,听着像发布会 PPT。这玩意儿不是拐,是塌方。有人已经站在新大陆上打桩,有人还在用洛阳铲往下挖旧路由表。九成没察觉?不是察觉不到,是察觉了也不信——毕竟 CDN 控制台里 latency 曲线还是平滑的,Lighthouse 分数还是九十六,Sentry 错误率还是零点零三。可你知道吗,我们现在看“可用性”,其实是看“可用性的可观测性是否还在线”。这话我自己听着都拗口,但我今天早上重装系统时,发现 homebrew install nginx 默认加了 stream_ssl_preread on;而三个月前我手动配的时候,文档里写着 “not recommended for production”。没改文档,改了默认值。就这么简单。 我下周要去趟深圳,见一个做 eSIM 中间件的老兄弟。他说他们最近上线了个小功能:把所有 HTTP 请求头里的 Sec-Fetch- 字段,在抵达 APN 网关前先 scrub 一遍。理由是某些非洲运营商的 DPI 设备会基于这些字段做 QoS 标记,而标记结果恰好让我们的 WebSocket 握手被降权到最低优先级队列。我听着笑了一下。他问我笑啥。我说——算了,你忙你的。反正我现在连自己的监控告警规则都不敢全信,上周刚把一条“响应头缺失 X-Frame-Options”的告警关了,因为发现 Googlebot 自己都不认这玩意儿了。它现在只认 CSP frame-ancestors。真事儿。 对了,昨天运维把生产库的 read replica 从香港切到了东京,切完我去看慢查询日志,发现原来每晚两点准时跑的报表任务,现在延迟分布变了:P95 从三百七十二毫秒缩到八十九,但 P99 跳到一千四百。没人提这事,因为 P95 是 OKR 里写的指标。我盯着那个数字看了半分钟,关了终端。这事我不打算报,除非哪天它开始咬到业务逻辑里的某个 if else 分支。目前来看,还够用。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


站长告别手动翻墙:3步自动化接入外网资讯
站长三天速成:跨境信息流外网实操手册
