多域名部署的优势
前端资源使用多域名部署的原因和好处
问题
为什么使用多域名部署?
解答
1. 突破浏览器并发限制
HTTP/1.1 下,浏览器对同一域名的并发连接数有限制(通常 6 个)。使用多域名可以增加并行下载数。
# 单域名:最多 6 个并发
www.example.com/a.js
www.example.com/b.js
www.example.com/c.js
...(排队等待)
# 多域名:并发数翻倍
www.example.com/a.js # 6 个并发
static.example.com/b.js # 额外 6 个并发
cdn.example.com/c.js # 再额外 6 个并发
2. 无 Cookie 域名
主域名的 Cookie 会自动携带在每个请求中。静态资源使用独立域名可以避免不必要的 Cookie 传输。
// 主站设置的 Cookie
document.cookie = "session=abc123"; // 假设 1KB
// 请求主域名下的资源 - 携带 Cookie
// GET www.example.com/logo.png
// Cookie: session=abc123 (浪费带宽)
// 请求独立域名的资源 - 无 Cookie
// GET static.otherdomain.com/logo.png
// (无 Cookie 头,节省带宽)
3. 便于 CDN 部署
用户请求
│
├── www.example.com ──────► 源服务器(动态内容)
│
├── static.example.com ───► CDN 节点(JS/CSS)
│
└── img.example.com ──────► 图片 CDN(图片优化)
4. 独立缓存策略
# 主站 - 不缓存或短缓存
server {
server_name www.example.com;
add_header Cache-Control "no-cache";
}
# 静态资源 - 长期缓存
server {
server_name static.example.com;
add_header Cache-Control "public, max-age=31536000";
}
5. 故障隔离
# 静态资源服务挂了,不影响主站 API
www.example.com ✓ 正常
api.example.com ✓ 正常
static.example.com ✗ 故障(页面仍可访问,只是样式丢失)
关键点
- 并发限制:HTTP/1.1 每域名约 6 个并发,多域名可突破限制
- 无 Cookie 域名:静态资源用独立域名,避免携带无用 Cookie
- CDN 友好:不同域名可指向不同 CDN,按资源类型优化
- 缓存隔离:不同域名可设置不同缓存策略
- HTTP/2 影响:HTTP/2 支持多路复用,多域名的并发优势减弱,但无 Cookie 域名仍有价值
目录