---
title: 动态、静态资源分开部署
taxonomy:
    category: docs
---

动静分离是高并发架构设计的第一步，部分场景下还是收益最大的那一步，因为我们可以把 99% 的流量压力都转移出去。

### Apache 和 Nginx 的性能差距

十年前，笔者用 4200 元从同学那里买到了一台二手的 Macbook Pro。彼时，Macbook Pro 还是满身接口的厚家伙，也没有细腻的视网膜屏幕，CPU 是 i5 双核，内存只有 4GB，但就是在那台电脑上，笔者使用一张静态图片测试了 Apache 和 Nginx 的性能差距：两万对八万，Nginx 的性能是 Apache 的四倍。

### 加一个 Nginx 软件竟然还能减少 CPU 和内存占用？

如果你的应用现在还在用 Apache 承载全部流量，那只需要在前面加一个 Nginx，承载静态资源的分发，动态请求可以原封不动地使用 http 协议发送给 Apache，只需要这样一个小操作，便可以在服务器配置不变的情况下把系统容量提升一倍以上。此时的系统架构图如图 1-1 所示。

此外，由于 Nginx 针对新图片格式（如 .webp）和视频流式传输等进行了专门的优化，在增加了一个软件后，服务器的 CPU 和内存资源消耗反而会明显下降。在如今流量越来越便宜的时代，静态资源的体积和流量呈指数级增长，Nginx 的性能优势还在持续扩大。

![](/media/16888225935467.jpg)
<center>图 1-1 Nginx 承载静态资源分发</center>

### 使用云服务

如果你在用云服务的话，那么把静态资源全部交给云服务商的 CDN 来承载，还可以再获得 90% 的 CPU 节省。同时，CDN 的流量费还比云主机的流量费更便宜，时至今日中国 CDN 市场已经卷的不像样子了。此时的系统架构图如图 1-2 所示。

![2893789274893278941](/media/2893789274893278941.png)
<center>图 1-2 静态资源全部使用云服务商的 CDN 服务</center>
