帝国 CMS 怎么配合 CDN
学会这套配置,你就能让帝国 CMS 的图片、CSS、JS 和静态 HTML 走 CDN,页面打开速度提升明显,同时不把会员登录、后台管理这些动态页面搞出串号事故。
第一步:先搞清楚帝国 CMS 的目录结构,决定哪些走 CDN
这一步的目标是列出「哪些 URL 可以缓存、哪些绝对不能缓存」,因为 CDN 的配置完全依赖这个清单。
帝国 CMS 7.5 默认安装后,主要目录职责如下:
/d/file/—— 上传的图片、附件、下载文件,最该缓存/skin/—— 模板皮肤目录,里面的 CSS、JS、图片(前台模板默认在/skin/default/)/html/或你自定义的静态目录 —— 系统生成的文章静态页/e/admin/—— 后台管理目录,绝对不能缓存/e/member/—— 会员中心,绝对不能缓存/e/action/、/e/search/、/e/Deliver/—— 动态接口,不能缓存
注意:
/e/目录下除了/e/data/中的部分图片 JS,其余一律设为不缓存。缓存了会员中心会导致 A 用户看到 B 用户的登录状态,这是最严重的事故。
第二步:把域名 CNAME 到 CDN,不改模板也能加速
这一步做完,全站流量就已经经过 CDN 节点,不需要动一行模板代码。
登录你的域名 DNS 管理后台,把主域名(例如 www.example.com)添加一条 CNAME 记录,指向 CDN 服务商提供的加速域名(腾讯云边缘安全加速平台、阿里云 CDN、Cloudflare 都是同样流程)。在 CDN 控制台添加加速域名时,源站填你服务器的真实 IP,端口 80 或 443,回源 Host 填 www.example.com。
这样配置的好处是:帝国 CMS 后台里「系统 → 系统设置 → 系统参数设置 → 基本属性」中的「网站地址」不用改,模板里的相对路径也不用动。
如果你想把静态资源放到独立域名(例如 static.example.com),那就需要到「模板管理 → 模板组管理」里逐个改模板里的 CSS/JS/图片路径,工作量大,新手不建议。
第三步:在 CDN 控制台配置缓存规则
这一步是核心,配完之后静态资源长期缓存、动态请求直连源站。
在 CDN 控制台的「缓存配置」里按下表添加规则,优先级从上到下:
- 路径
/e/开头 —— 不缓存,直接回源 - 路径
/d/file/开头 —— 缓存 30 天,忽略 URL 参数中的?后内容 - 路径
/skin/开头 —— 缓存 30 天 - 后缀
.css、.js、.png、.jpg、.webp、.woff2—— 缓存 7 天 - 后缀
.html—— 缓存 2 小时(帝国 CMS 生成静态页后需要刷新) - 路径
/且带?参数(动态列表页、搜索页)—— 缓存 60 秒或直接不缓存
同时打开「智能压缩」(Gzip/Brotli)和「HTTP/2」。
注意:帝国 CMS 的动态列表页经常用
?传参,例如/e/action/ListInfo/?classid=1。如果 CDN 的缓存键忽略了查询参数,不同栏目会返回同一份缓存,出现栏目内容错乱。
第四步:开启静态页生成,让 CDN 缓存真正命中
这一步做完,文章页会变成真静态 HTML,CDN 命中率能从 30% 提到 90% 以上。
进入「系统 → 数据更新 → 刷新所有页面」,或对单个栏目在「栏目管理 → 管理栏目 → 生成选项」里勾选「生成静态页」。帝国 CMS 7.5 默认会在发布内容时生成 HTML,路径一般在 /html/ 下。
之后每次发布或修改文章,静态页会自动更新,但 CDN 上还是旧文件,需要手动或自动刷新:
- 手动:在 CDN 控制台的「刷新预热」里提交 URL 或目录刷新
- 自动:帝国 CMS 后台可以配置钩子,或用 CDN 服务商的 OpenAPI 在发布后调用刷新接口
注意:改了模板或网站配置后,一定要执行一次「系统 → 数据更新 → 更新缓存」,再刷新 CDN,否则模板改动不会生效。
第五步:做好源站保护,防止绕过 CDN 直连
这一步是安全兜底,避免别人拿到你的真实 IP 后直接刷源站。
在你的服务器 Nginx 配置中,限制只允许 CDN 回源 IP 段访问 80/443 端口。以腾讯云 CDN 为例,回源 IP 段可在控制台「回源配置」页面查看,写成 allow 1.2.3.0/24; deny all; 放在 server 块里。
另外在帝国 CMS 后台「系统 → 系统设置 → 安全设置」中开启后台登录 IP 白名单,把 /e/admin/ 单独绑定一个不经过 CDN 的子域名或限制访问 IP。
注意:开启 IP 白名单前先确认 CDN 回源 IP 段没有遗漏,否则会出现大面积 403。
小结
- 帝国 CMS 的
/d/file/、/skin/、/html/适合长缓存,/e/下的后台、会员中心、动态接口必须设为不缓存 - 最省事的做法是整站 CNAME 到 CDN,靠目录和路径规则区分缓存策略,不动模板
- 动态列表页带
?参数时,缓存键必须区分查询参数,否则栏目内容会串 - 发布内容后要刷新 CDN 缓存,否则用户看到旧页面
- 配完务必限制源站只接受 CDN 回源 IP,防止真实 IP 泄露后被绕过
原文链接:https://www.gj0.com/thread-1013.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。