需配置独立静态子域名并迁移资源路径以实现动静分离:新建纯静态站点、修改WordPress资源引用、配置CDN回源与缓存、验证URL及响应头、清除各层缓存。

如果您已部署 WordPress 或其他 PHP 网站于宝塔面板,但静态资源(如图片、CSS、JS)仍与动态内容共用同一域名和服务器路径,则无法充分发挥 CDN 加速能力。动静分离需将静态资源剥离至独立子域名(如 static.example.com 或 cdn.example.com),并由 CDN 托管分发。以下是实现该目标的具体操作步骤:
一、配置独立静态资源子域名
通过新建站点承载静态文件,使其与主站物理隔离,为 CDN 接入提供独立入口。该站点不运行 PHP,仅提供纯静态服务,降低服务器负载并提升缓存命中率。
1、在宝塔面板【网站】页面点击【添加站点】,填写静态子域名(如 static.example.com)。
2、根目录设为全新路径,例如 /www/wwwroot/static.example.com,避免复用主站 static/ 目录。
3、在【PHP版本】下拉菜单中选择【纯静态】,禁用所有脚本解析。
4、进入该站点【设置】→【SSL】,申请并部署有效证书,确保 HTTPS 可用。
二、迁移并映射静态资源路径
使主站 HTML 中引用的静态资源 URL 指向新子域名,而非原 /static/ 或 /wp-content/ 等相对路径,从而触发 CDN 回源请求。此步骤需修改程序输出逻辑或通过 Nginx 重写实现无侵入切换。
1、登录 WordPress 后台,进入【设置】→【常规】,将WordPress 地址(URL)和站点地址(URL)保持不变,仅调整静态资源引用方式。
2、安装插件 WP Offload Media Lite 或手动修改主题 functions.php,添加以下代码强制替换静态资源域名为子域名:
add_filter('script_loader_src', 'cdn_url_replace'); add_filter('style_loader_src', 'cdn_url_replace'); function cdn_url_replace($url) { if (is_admin()) return $url; return str_replace('https://example.com/wp-content/', 'https://static.example.com/wp-content/', $url); }
3、若使用自定义静态目录(如 /static/),在主站 Nginx 配置中添加 rewrite 规则,将所有匹配 /static/.* 的请求 302 重定向至 static.example.com 对应路径:
location ^~ /static/ { return 302 https://static.example.com$request_uri; }
三、配置 CDN 回源与缓存策略
CDN 需明确知道从何处拉取静态资源,并对不同后缀设定合理缓存时长,避免频繁回源及缓存污染。宝塔站点作为源站必须正确响应 CDN 的 Host 头与协议标识。
1、在 CDN 控制台(如阿里云/又拍云)添加加速域名 static.example.com,回源地址填写宝塔服务器公网 IP 或已解析的源站域名。
2、回源 HOST 必须设置为 static.example.com,不可留空或填主站域名,否则 Nginx 无法匹配到对应站点配置。
3、在宝塔【网站】→【static.example.com】→【配置文件】中,在 server 块内确认已存在以下关键行:
server_name static.example.com;
listen 443 ssl http2;
4、在 CDN 缓存规则中,为常见静态后缀(.jpg .png .gif .css .js .woff2 .webp)单独设置缓存时间为 30天(2592000秒);对 /wp-content/uploads/ 目录启用目录级缓存,同样设为 30 天。
四、验证静态资源加载路径与响应头
确保浏览器实际请求的资源 URL 已变更至静态子域名,且响应头中包含 CDN 缓存标识与长效 Cache-Control,证明动静分离链路已贯通。
1、打开网站任意页面,右键【检查】→【Network】标签页,刷新页面,筛选类型为 Img、JS、CSS 的请求。
2、逐项查看其 Request URL,确认全部以 https://static.example.com/... 开头,而非主站域名。
3、点击任一静态资源,查看 Response Headers,确认存在以下两项:
X-Cache: HIT from cdn-node-xxx(表明命中 CDN 边缘节点缓存)
Cache-Control: public, max-age=2592000(表明缓存有效期为 30 天)
五、强制清除旧缓存并测试跨地域访问
浏览器、CDN 节点及 Nginx 代理层均可能存在残留缓存,导致仍加载旧路径资源。需系统性清理各层级缓存,再通过多地节点验证分离效果。
1、在宝塔【软件管理】→【Nginx】→【清除缓存】执行清空操作(若已启用 Nginx 缓存)。
2、在 CDN 控制台提交全站 URL 刷新任务,输入 https://static.example.com/ 并选择【目录刷新】。
3、使用不同网络环境(如手机 4G、家庭宽带、办公网络)访问网站,打开开发者工具 Network 面板,观察静态资源是否始终返回 X-Cache: HIT 且响应时间低于 100ms。










