内容分发网络把缓存拉近
CDN 可以缩短读者与可复用响应之间的路径,也能减少源站请求量。但这些收益取决于实际路由、缓存里已有的内容和生效策略。域名指向 CDN,不等于某个对象已经缓存,也不证明服务它的是地理上最近的机器,更不能保证每次请求都会绕开源站。应检查真正发生的请求链路,而不是把网络示意图当作验证结果。 把币种转发给源站,并不自动让缓存区分币种。文章固定时钟模型保留币种与语言,排除无关追踪;错误投影却让 EUR 请求复用价格为 10 的 USD 正文。本图仅解释文中策略,不增加 CDN、路由、延迟、清理或账户隔离验证。 沿着真实请求检查 访客会到达服务商路由选出的边缘。如果那里存在可以复用的响应,就能直接返回;否则请求可能经过另一层缓存,也可能抵达源站。因此某个位置的第一次访问,常常与紧接着的第二次不同。发布文件也不代表它会立刻完整复制到所有边缘,不能把“源站可读取”和“所有节点已预热”混为一谈。 即使不能缓存,流量仍可能受益于连接处理或网络路由优化,但它不会取得缓存命中带来的同等回源减免。测量时要分开看建连、首字节等待和正文传输。一次距离源站很近的快速请求,不能推断远方读者、冷节点或源站故障时的表现;需要按真实访问位置和缓存状态分别取证。 明确哪些请求可以共享字节 缓存键决定哪些请求允许共享同一份响应。路径、选定的查询参数、请求头和 Cookie 都可能影响这个身份。凡是会改变所选表示的输入,都必须在复用决策中得到区分;只有确实不改变响应的追踪参数,才适合排除。维度太多会碎片化缓存,遗漏必要维度则可能返回错误内容,甚至跨越敏感数据边界。 “转发给源站”不等于“纳入缓存键”。CloudFront 区分缓存策略和源站请求策略,后者可以转发不进入缓存键的值。如果币种会传给源站、源站也据此生成金额,但缓存键忽略币种,那么一份美元响应就可能用于欧元请求。此时命中率上升并不是优化成果,而是在掩盖内容正确性缺陷。 ...