定义
CDN(Content Delivery Network,内容分发网络)通过在全球部署边缘节点,将静态资源、Portal 页面、API 响应等缓存至用户就近节点,加速全球访问、降低源站压力、提升可用性。在 ICMP 中,CDN 与 Edge Location、Multi-Region 配合,保障客户 Portal、控制台、RESTful API 文档等在全球范围内的低延迟访问。
技术原理
CDN 通过 DNS 智能解析,将用户请求导向最近的边缘节点;若边缘有缓存则直接返回,否则回源拉取并缓存。支持静态资源(JS、CSS、图片)、动态内容加速、HTTPS 卸载、DDoS 防护等。跨境物联网平台客户遍布全球,CDN 可显著降低亚太、欧洲、美洲等地的首屏加载时间与 API 延迟,提升用户体验。
在 ICMP 中的应用
达希物联 ICMP 使用 CDN 加速:客户 Portal 与控制台页面;SDK、文档、Swagger 等静态资源;部分读多写少的 API 响应。结合 Multi-Region 多区域部署与 Region Failover,CDN 可配置多源站、故障切换,保障高可用。敏感 API 与计费相关接口通常不走 CDN,直接回源以保证数据一致性与安全。
选型与合规
CDN 选型需考虑节点覆盖、合规要求、成本。跨境场景下,需关注 Data Residency 与 Data Localization:部分国家要求数据不出境,CDN 缓存策略需避免将敏感数据缓存至境外节点;可选用本地化 CDN 或边缘计算节点,满足监管要求。
边缘缓存命中与回源各自依据什么
内容分发网络把可重复读取的对象放在离访问者更近的节点上。用户请求先被解析到某个节点;节点若持有未过期的副本,就直接返回,这叫命中;没有副本或副本已过期,节点再向源站拉取并按规则保存,这叫回源。判断依据是缓存键和有效期。缓存键通常包含地址、查询参数和必要的头部。少算一个参数,不同客户会拿到同一份副本;多算一个每次都变的参数,缓存永远无法命中。
它加速的是内容的分发,不改变源站上的业务数据。源站更新后,边缘副本会在有效期内继续存在,除非主动刷新。因此文档、脚本和图片适合分发;刚刚生成的账单、实时用量和写操作结果不适合靠有效期碰运气。节点覆盖范围只说明访问从哪里进入,不说明数据可以存放在哪里。
哪些平台内容可以放到分发节点
可以上节点的,是所有访问者看到都相同、并且可以公开或仅按地址区分的内容:控制台的脚本和样式、不带客户数据的帮助图片、软件开发包的安装包、公开的接口说明。这些对象更新频率低,刷新一次即可。读多写少的公开说明页也可以短时缓存,但页面里不能嵌入某个客户的卡号或余额。
不应上节点的,是身份令牌、会话、账单、详单、卡诊断结果和任何按租户变化的接口响应。即便响应看起来是“查询”,只要内容依赖登录身份,缓存键就必须包含不可猜测的身份,并且通常更合理的做法是直接回源。与边缘节点配合时,可以把加密卸载和静态文件放在边缘,把计费查询留在区域源站。需要符合数据属地的内容,还要限制副本只能出现在约定区域的节点上,不能为了就近而复制到区域外。
把账单和令牌响应缓存出去的风险
把账单接口按地址缓存,是分发层最严重的串数据方式。后一个用户若命中前一个用户的副本,会看到别人的金额和卡标识。令牌响应被缓存后,后来的调用方可能拿到仍然有效的访问凭证。个人数据进入边缘磁盘后,即使业务上已经删除,副本也会留到过期或刷新,删除请求没有真正完成。
另一类差错是缓存键忽略查询参数里的客户号或账期,所有客户共用一份“本月用量”。源站紧急改正错误文档后,边缘仍在有效期内提供旧文件,客户按旧字段对接。刷新时若只刷新一个区域的节点,其他区域继续提供旧副本。还有把动态接口错误地标成可长期缓存,写操作的结果被后续读取覆盖。上线前应检查缓存键、有效期和是否允许进入边缘磁盘;带身份的接口默认不缓存。出了串数据,要先让相关地址立即失效,再查是键设计问题还是响应头把私有内容标成了公共内容。
刷新要按对象而不是按整个站点。改了一份接口说明,却把所有客户的静态资源都判失效,源站会被瞬间打满;只改源站文件、不通知节点,边缘继续提供旧字段说明,对接会按过期文档失败。带查询参数的地址若参数含有随机数,缓存永远不命中,分发层等于没有生效,延迟仍由源站决定。上线后抽查响应头里的缓存状态和年龄,确认命中的是预期对象。私有接口的响应头应明确禁止共享缓存,不能依赖节点“默认不缓存”。