Skip to content

Commit 9923b26

Browse files
committed
docs: 完善 CDN 和数据冷热分离
1 parent 526a76d commit 9923b26

File tree

3 files changed

+248
-11
lines changed

3 files changed

+248
-11
lines changed

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ footer: |-
5757

5858
## 🌐 关于网站
5959

60-
JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit ,共有 **570+** 多位贡献者共同参与维护和完善。真心希望能够把这个项目做好,真正能够帮助到有需要的朋友!
60+
JavaGuide 已经持续维护 6 年多了,累计提交了 **\*\*\*\***6000+**\***\*** commit ,共有 \***\*\***\*620+\*\*\***\*\*\* 多位贡献者共同参与维护和完善。真心希望能够把这个项目做好,真正能够帮助到有需要的朋友!
6161

6262
如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star(绝不强制点 Star,觉得内容不错有收获再点赞就好),这是对我最大的鼓励,感谢各位一路同行,共勉!传送门:[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)
6363

docs/high-performance/cdn.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ head:
3535

3636
绝大部分公司都会在项目开发中使用 CDN 服务,但很少会有自建 CDN 服务的公司。基于成本、稳定性和易用性考虑,建议直接选择专业的云厂商(比如阿里云、腾讯云、华为云、青云)或者 CDN 厂商(比如网宿、蓝汛)提供的开箱即用的 CDN 服务。
3737

38-
### 为什么不直接将服务部署在多个不同的地方?
38+
## 为什么不直接将服务部署在多个不同的地方?
3939

4040
很多朋友可能要问了:**既然是就近访问,为什么不直接将服务部署在多个不同的地方呢?**
4141

@@ -172,13 +172,63 @@ http://cdn.example.com/video/123.mp4?wsSecret=79aead3bd7b5db4adeffb93a010298b5&w
172172

173173
> **推荐实践**:生产环境建议采用 **Referer 防盗链 + 时间戳防盗链**的组合方案,兼顾安全性与实现成本。对于安全性要求极高的场景(如付费内容),可进一步引入 Token 鉴权机制。
174174
175+
## CDN 如何加速动态资源?
176+
177+
传统的 CDN 主要针对静态资源(如图片、CSS、JS)进行缓存加速,而对于**动态资源**(如 API 接口、实时查询、支付请求、`.jsp`/`.asp`/`.php` 等动态页面),内容实时变化无法缓存,传统 CDN 往往直接回源,加速效果有限。
178+
179+
**动态加速(Dynamic Content Acceleration)** 正是为了解决这一问题而设计。它不缓存内容,而是通过智能路由、协议优化等技术,提升动态请求的传输速度和稳定性。
180+
181+
动态加速主要通过以下三种技术手段实现:
182+
183+
1. **智能路由选路(最优链路探测)**:动态请求从用户端发出后,先到达离用户最近的 CDN 边缘节点。CDN 内部通过**实时网络监测技术**,探测全网链路质量(包括延迟、丢包率、带宽负载),避开公网中的拥堵或质量较差的节点,选择一条最优的传输路径到达源站。
184+
185+
2. **传输协议优化**
186+
187+
- **TCP 优化**:优化 TCP 慢启动、拥塞控制算法,在高延迟或丢包环境下提升传输效率。
188+
- **连接复用**:边缘节点与源站之间保持长连接(Keep-Alive),减少频繁握手带来的延迟。
189+
190+
3. **动静态混合加速**:现代 CDN(如阿里云 DCDN、腾讯云 ECDN)能够自动识别用户请求的资源类型:
191+
- **静态资源**:直接从边缘节点缓存返回。
192+
- **动态资源**:通过智能路由回源获取。
193+
194+
> **一句话总结**:动态加速 = 智能探测 + 动态选路 + 协议优化,让动态请求跑得又快又稳。
195+
196+
## CDN 如何优化 HTTPS 访问速度?
197+
198+
HTTPS 虽然安全,但 TLS 握手和加解密过程会增加延迟。CDN 通过多种技术手段对 HTTPS 进行加速优化,在保障安全的同时提升访问速度。
199+
200+
| 优化技术 | 原理说明 | 效果 |
201+
| ----------------- | -------------------------------------------------------------------------------------- | ------------------------------ |
202+
| **会话复用** | 用户首次建立 HTTPS 连接后,节点缓存会话信息;再次访问时复用会话参数,减少完整 TLS 握手 | 减少握手延迟 |
203+
| **OCSP Stapling** | 由 CDN 节点定期缓存证书状态,在 TLS 握手时一并发给浏览器,避免浏览器单独查询 CA 机构 | 提升握手效率 |
204+
| **False Start** | 在 TLS 握手尚未完全完成时就开始传输加密数据 | 减少一个 RTT 开销 |
205+
| **HTTP/2** | 支持多路复用、头部压缩 | 减少连接数和传输延迟 |
206+
| **QUIC** | 基于 UDP 的传输协议,0-RTT 建立连接 | 减少连接建立时间,改善弱网体验 |
207+
208+
**CDN 证书托管的优势**
209+
210+
CDN 服务商(如腾讯云、阿里云)通常提供**免费 SSL 证书****自动续期**服务,具有以下优势:
211+
212+
- **免运维**:用户无需手动更新证书,避免因证书过期导致的访问失败。
213+
- **灵活配置**:支持在 CDN 控制台上传证书,或一键申请免费证书。
214+
- **多种加密模式**:可选择”**半程加密**”(用户到 CDN 为 HTTPS,CDN 到源站为 HTTP)或”**全程加密**”(两端均为 HTTPS)。
215+
216+
**HTTPS 加速的配置建议**
217+
218+
1. **基础配置**:在 CDN 控制台开启 HTTPS,并配置证书。
219+
2. **性能优化**:开启 **OCSP Stapling****HTTP/2**
220+
3. **安全增强**:如需更高安全等级,可开启 **HSTS**(强制浏览器使用 HTTPS 访问)。
221+
4. **弱网优化**:开启 **QUIC** 协议支持,改善移动端弱网环境下的访问体验。
222+
175223
## 总结
176224

177225
- **CDN 的核心价值**:将静态资源分发到多个不同的地方以实现**就近访问**,加快静态资源的访问速度,减轻源站服务器及带宽的负担。
178226
- **CDN 服务选型**:基于成本、稳定性和易用性考虑,建议直接选择专业的云厂商(如阿里云、腾讯云、华为云)或 CDN 厂商(如网宿、蓝汛)提供的开箱即用服务。
179227
- **GSLB 的作用**:GSLB(全局负载均衡)是 CDN 的大脑,负责根据用户位置、节点状态等因素,将用户请求调度到**最优的 CDN 节点**
180228
- **核心指标****命中率**越高越好,**回源率**越低越好。
181229
- **防盗链机制**:推荐采用 **Referer 防盗链 + 时间戳防盗链**的组合方案,平衡安全性与实现成本。
230+
- **动态加速**:通过**智能路由选路****传输协议优化****动静态混合加速**三种技术手段,提升动态请求(API 接口、实时查询等)的传输速度和稳定性。
231+
- **HTTPS 加速**:通过**会话复用****OCSP Stapling****False Start****HTTP/2****QUIC** 等技术优化 TLS 握手和传输过程,在保障安全的同时提升访问速度。
182232

183233
## 参考
184234

0 commit comments

Comments
 (0)