服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-24 更新于 2026-08-24 简米科技 3,088 字 7 分钟阅读

如何配置网站动静分离部署步骤与缓存规则,动静分离缓存规则有哪些?

导读网站动静分离部署的核心在于区分静态与动态资源,通过Nginx将请求分流,并结合缓存规则提升响应速度,这是中型站点性能优化的首选方案,为什么要做动静分离动静分离并非新概念,但很多站长在业务增长后才想起补课,日常运营中,图片、CSS、JS这类静态资源占据了请求量的相当一部分,却不需要后端计算,如果让它们和动态页面挤……

网站动静分离部署的核心在于区分静态与动态资源,通过Nginx将请求分流,并结合缓存规则提升响应速度,这是中型站点性能优化的首选方案。

为什么要做动静分离

动静分离并非新概念,但很多站长在业务增长后才想起补课,日常运营中,图片、CSS、JS这类静态资源占据了请求量的相当一部分,却不需要后端计算,如果让它们和动态页面挤在同一台服务器,不仅浪费PHP或Java进程,还容易拖慢核心业务,行业共识认为,一套合理的动静分离架构,能让服务器吞吐量提升数倍,同时降低带宽成本,尤其对于电商大促或资讯类场景,高并发下静态资源用CDN兜底,动态请求留给自己处理,效果立竿见影。

动静分离的典型场景

- 高频访问的图片站、素材站,静态资源占比超过80%
- 需要频繁更新静态文件但希望用户立即看到新版本的项目
- 后端服务压力大,希望将健康检查、缓存击中率等指标分离出来

网站动静分离部署步骤详解

这一步是实操重点,我们从资源梳理开始,到Nginx配置收尾,全程给出可复用的命令和路径。

第一步:梳理资源类型并拆分目录

将项目中的静态文件统一放到独立目录,`/static/` 或 `/assets/`,并确保动态请求不经过该目录,常见的静态资源包括:
- 图片:jpg、png、webp、svg
- 样式:css、less、scss(编译后)
- 脚本:js、mjs
- 其他:字体(woff/woff2)、音视频片段

动态请求(如API接口、页面渲染)应保留在 index.php/api/

如何配置网站动静分离部署步骤与缓存规则,动静分离缓存规则有哪些?

.do 等路径下,这一步看似简单,但梳理不清会导致后续规则混乱。

第二步:域名规划与CDN接入

静态资源最好使用独立域名(如 `static.example.com`),这样浏览器可以并行加载,也方便后续CDN无缝切换,如果预算有限,也可以用子路径加CDN域名回源,业内专家指出,使用独立域名还能避免静态资源携带不必要的cookie,减少请求头体积,配置CDN时,只需将CNAME解析到CDN服务商提供的地址,并在源站保留一份完整静态文件。

第三步:nginx动静分离配置实例

以下是一个典型的Nginx配置,适用于大多数PHP项目,通过 `location` 匹配规则,将静态请求直接返回文件,动态请求转发到后端。

server {
    listen 80;
    server_name example.com;
    # 静态资源直接处理
    location ~ .(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
        root /var/www/html/static;
        expires 30d;
        add_header Cache-Control "public, immutable";
        try_files $uri =404;
    }
    # 动态请求转发到后端
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

注意:root 路径指向静态文件目录,expiresCache-Control 是为了配合下一步的缓存规则,如果使用CDN,则不需要在Nginx层设置缓存过期,CDN会读取源站返回的头部。

第四步:动静分离缓存规则配置要点

缓存规则决定了用户浏览器和CDN如何存储资源,这是影响二次加载速度的关键,配置时需要差异化对待静态和动态内容。

如何配置网站动静分离部署步骤与缓存规则,动静分离缓存规则有哪些?

静态资源缓存规则

对于版本稳定的文件,推荐设置较长的过期时间,并利用文件名指纹(如 `app.a1b2c3.js`)解决更新问题,以下是一个通用策略:
- 图片、字体:缓存30天以上,`Cache-Control: public, max-age=2592000`
- CSS/JS(带版本号):缓存1年,`Cache-Control: public, immutable`
- 未带版本号的静态文件:建议设置较短的缓存(如1天),并在Nginx中通过 `expires -1` 配合 `add_header Cache-Control no-cache` 处理

动态资源缓存规则

原则上不应被浏览器缓存,但可以在服务端设置短时缓存来减轻后端压力,例如针对商品详情页接口,可以设置 `Cache-Control: public, max-age=60` 允许CDN缓存60秒,同时用 `s-maxage` 区分代理缓存和浏览器缓存,对于用户私密数据(如购物车),必须使用 `private, no-cache`。

缓存规则配置表格

如何配置网站动静分离部署步骤与缓存规则,动静分离缓存规则有哪些?

资源类型 示例路径 浏览器缓存 CDN缓存 备注
图片(无版本) /static/images/logo.png 30天 30天 避免频繁修改
带指纹的CSS/JS /static/css/app.a1b2c3.css 1年 1年 更新时文件名变化
未带指纹的JS /static/js/legacy.js 1天 1天 配合版本号改进
动态API接口 /api/goods/detail 不缓存 60秒 用s-maxage控制
用户私人数据 /api/user/info 私有,不缓存 不缓存 保证安全

动静分离与缓存规则配置问答

动静分离后,静态资源更新了用户看不到怎么办?

这是最常见的问题,解决方案是使用文件指纹或版本号,让浏览器和CDN将新文件视为全新资源,如果无法修改文件名,可以通过CDN强制刷新缓存,或者设置较短的缓存时间并配合Etag验证,多数情况下,文件指纹的收益最高,且成本最低。

动静分离部署后,动态请求包含静态资源路径会出错吗?

如果你的动态页面中引用了静态资源,且路径是相对路径,分离后可能导致资源加载失败,建议在页面模板中使用绝对路径或加装CDN域名前缀,确保资源能正确回源,同时检查Nginx中 `location /` 是否覆盖了静态路径,避免冲突。

CDN与动静分离叠加时,缓存规则如何协同?

CDN会遵循源站返回的 `Cache-Control` 头部,但不同CDN服务商可能存在差异,建议在源站Nginx上统一设置 `s-maxage` 和 `max-age`,CDN优先读取 `s-maxage`,如果使用私有CDN,还需要注意 `X-Cache` 状态,确认缓存是否命中,最终目标是让静态资源离用户更近,动态资源回源站处理。
动静分离配合缓存规则,是大多数网站从单机走向高并发的必经之路,通过梳理资源、规划域名、配置Nginx规则,再针对不同资源设定差异化缓存时间,能显著减少服务器压力,提升用户体验,这套方案不依赖昂贵硬件,适合业务增长期的团队快速落地。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱