🔌 第五章 服务器端的局域网中有什么玄机
📄 一句话概括

不走 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 秒实验

  1. 用 curl -v 观察一次 302 重定向的全过程。
  2. 对比两种方式各适合什么内容(大文件 vs 网页)。
  3. 想想重定向法的入口服务器自己要不要做负载均衡。

常见误区

  1. 以为重定向是浏览器 bug——它是 HTTP 标准机制。
  2. 以为两种方式二选一——实际按场景混用。
自测三问(点开对答案) 1. 重定向用的状态码? —— 302(Location 指新地址)。 2. 重定向法的代价? —— 多一次往返。 3. 它比 DNS 法强在哪? —— 分配即时精准,可随时改目标。

相关笔记