[FE 资源链路] 1 - 资源访问优化(全量) - CDN加速 / 负载均衡 / 缓存刷新 预热
[FE 资源链路] 2 - 资源访问优化 - 补丁 + 本地缓存
[FE 资源链路] 3 - CDN返回资源异常 / 分析 / 解决
[FE 链路] 4 - 针对整个链路 性能优化
[FE 链路] 5 - 浏览器渲染机制 / reflow repaint / async defer
[FE 链路] 6 - 前端性能指标
0. 常见问题
- DNS解析失败
- 回源被劫持
1. 遇到的问题: 某地区部分用户访问失败
【背景】某地区 在某安卓app 的用户能访问访问不了资源
【分析】DNS解析失败。之前说到过DNS解析权 通过 CNAME,交给CDN专用DNS服务器
- CNAME: a.com => b.com => 全局负载均衡IP
- b.com的ip指向有部分失效,某些安卓或 IOS APP,
因为在本地之前缓存过域名解析的ip, 该 全局负载均衡IP已失效,导致域名解析失败。
【解决】我们无法推进app去改,那就改变请求链路
- 不走CDN链路,因为DNS解析有问题。
- 直接走我们自己服务端的网关,服务直接向源站 (华为云/腾讯云....) 发起请求,返回资源。
优点: 这个链路都是保证https。不存在被篡改问题。也不存在解析出错问题。
缺点: 需要评估服务端的能承受的QPS流量是多少。
2. 遇到的问题: CDN加速节点的信息被篡改
- CDN缓存阶段链路 是可以通过 https 或 http 访问的。
- 回源是: http访问的。
【背景】返回信息一半 或 不是我服务的资源 或 旧资源
【分析】
- 旧资源: 可能是CDN 缓存预热或缓存失效。
- 返回信息一半 或 不是我服务的资源: 资源被篡改了。。。。
【为什么会被篡改】
- CDN缓存阶段链路 是可以通过 https 或 http 访问的。
- 回源是: http访问的。
- 存在问题: 回源过程中,被劫持。
3. 访问资源链路
- CDN链路
- 全链路https
3.1 - CDN链路
- http和https共存,但回源是http, 有被劫持风险。
- 可利用CDN节点加速访问。
3.2 - 全链路https, 无劫持风险
- 但需要预估自己网关承载能力, 该方案是通过自己的服务 从源站 请求返回资源。
- 可作为异常兜底 和 快速容错方案。
4. Recap
- 如何发现CDN问题? - CDN请求成功率下降 / 异常上升, 需要业务层实时监控方案。
- 如何排查路径? 是DNS 解析失败? / 缓存节点问题? / 回源路上被劫持?
- 如何快速容错? HTTPS访问不会被劫持 / 已缓存在本地的资源暂时不会被劫持的。
- 如何快速排查? 资源访问 (DNS解析)/ 资源内容返回是否异常