📄 一句话概括
不走 DNS 的另一招:先访问入口服务器,它按客户端位置回一个重定向(302 Location),把浏览器带到目标缓存节点——多一次往返,但分配及时精准。
📝 本节和前面几节的关系
5.5.2 的 DNS 法有个短板;本篇是替代方案。
一、重定向怎么走
浏览器先访问入口服务器; 入口看一眼客户端位置,回 302 Location: 浏览器再按新地址访问指定缓存节点。
二、两种方式对比
DNS 法:少一次往返;但 DNS 缓存会让节点分配保鲜期长; 重定向法:多一次往返;分配即时精准,还能随时改目标。 CDN 厂商按场景混用两者。
三、动手 Demo:重定向分配
另一招不走 DNS,走 HTTP 重定向:
for s in ['浏览器 -> 入口服务器',
302 Location: http://节点C.example.com/...',
浏览器 -> 节点 C(重定向指定的目标)']:
print(s)
print()
print('DNS 方式:少一次往返,但 DNS 缓存会拖累精度')
print('重定向方式:多一次往返,但分配最及时精准')
实跑输出:
--------------------------------------------------------------------
重定向分配
--------------------------------------------------------------------
另一招不走 DNS,走 HTTP 重定向:
浏览器 -> 入口服务器
302 Location: http://节点C.example.com/...
浏览器 -> 节点 C(重定向指定的目标)
DNS 方式:少一次往返,但 DNS 缓存会拖累精度
重定向方式:多一次往返,但分配最及时精准
两种方式各有买卖,CDN 厂商按场景选用。
重定向还能顺带做【负载调度】:哪台节点忙, 入口服务器改一行 Location 就把用户引走了。
30 秒实验
- 用 curl -v 观察一次 302 重定向的全过程。
- 对比两种方式各适合什么内容(大文件 vs 网页)。
- 想想重定向法的入口服务器自己要不要做负载均衡。
常见误区
- 以为重定向是浏览器 bug——它是 HTTP 标准机制。
- 以为两种方式二选一——实际按场景混用。
自测三问(点开对答案)
1. 重定向用的状态码? —— 302(Location 指新地址)。 2. 重定向法的代价? —— 多一次往返。 3. 它比 DNS 法强在哪? —— 分配即时精准,可随时改目标。- ☐ 下一节(5.5.4 缓存的更新方法会影响性能)
相关笔记
- 发送请求后会收到响应 — 状态码的出处
- 缓存的更新方法会影响性能 — 收尾:内容怎么保鲜
- 🔌 网络是怎样连接的 · 索引