ThinkPHP 8.0 配置 CDN 加速需动态定义 __STATIC__ 常量,通过 config/app.php 和 .env 统一控制静态资源 URL,支持开发/生产环境自动切换,并配合 CDN 源站、缓存、版本及 DNS 设置确保生效。

ThinkPHP 8.0 配置 CDN 加速,核心是让静态资源(CSS、JS、图片等)的 URL 自动指向 CDN 域名,而不是本地 /static/ 路径,同时确保开发与生产环境无缝切换。关键不在改模板,而在统一控制资源路径的源头。
动态定义 __STATIC__ 常量
ThinkPHP 模板中常用 __STATIC__ 引用静态资源,比如:<link href="__STATIC__/css/app.css">。
若直接写死 CDN 地址,本地调试会失效;若硬编码判断逻辑,又破坏模板缓存。正确做法是让它“一次计算、全局生效”:
- 在
app/common.php或应用初始化文件中添加:define('__STATIC__', config('app.cdn_url') ?: __ROOT__ . '/static'); - 在
config/app.php中增加配置项:'cdn_url' => env('CDN_URL', ''), - 部署时通过
.env控制:
开发环境留空 → 自动回退到本地路径;
生产环境写入:CDN_URL=https://cdn.example.com
统一管理多类资源 URL(可选但推荐)
除 __STATIC__,项目中还可能单独引用 CSS、JS、图片等路径。为保持一致性,建议在配置中分项定义:
- 在
config/app.php添加:'static_url' => env('CDN_URL', __ROOT__ . '/static'),<br>'css_url' => env('CDN_CSS_URL', __ROOT__ . '/static/css'),<br>'js_url' => env('CDN_JS_URL', __ROOT__ . '/static/js'),<br>'image_url' => env('CDN_IMAGE_URL', __ROOT__ . '/static/images'), - 模板中改用助手函数或配置调用:
<link href="{:config('app.css_url')}/app.css">
注意:仅限非高频变动页面使用,避免影响模板编译缓存
CDN 侧必须配合的设置
后端配好了,CDN 服务本身也要对齐,否则加速无效甚至出错:
立即学习“PHP免费学习笔记(深入)”;
-
源站配置:CDN 后台填写源站地址,通常为你的主域名(如
https://www.example.com),并开启 HTTPS 回源 -
缓存规则:针对
/static/、/css/、/js/等路径设置长缓存(如max-age=31536000),HTML 页面则禁用缓存或设短周期 -
文件版本控制:启用构建工具(如 ThinkPHP 的
build.php)自动添加 hash 后缀,例如app.a1b2c3.js,避免手动加?v=1.0导致 CDN 缓存失效困难 -
CNAME 绑定:将你配置的 CDN 域名(如
cdn.example.com)通过 DNS CNAME 记录指向 CDN 提供商给的接入地址
验证是否生效
上线后快速确认 CDN 是否真正起作用:
- 打开浏览器开发者工具 → Network 标签页
刷新页面,筛选css、js、img请求 - 检查资源响应头:
查看X-Cache(腾讯云)、X-Cache-Hits(阿里云)或Age字段,确认命中缓存 - 对比请求 URL:应显示为
https://cdn.example.com/xxx.css,而非你的主站域名 - 用不同地区代理访问,观察加载时间是否明显降低



















