帝国 CMS 怎么配合 CDN

liulian
liulian 初级会员超兽战士
发布于 2026-10-08 14:50 ·1 浏览 ·0 回复

学会这套配置,你就能让帝国 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 控制台的「缓存配置」里按下表添加规则,优先级从上到下:

  1. 路径 /e/ 开头 —— 不缓存,直接回源
  2. 路径 /d/file/ 开头 —— 缓存 30 天,忽略 URL 参数中的 ? 后内容
  3. 路径 /skin/ 开头 —— 缓存 30 天
  4. 后缀 .css、.js、.png、.jpg、.webp、.woff2 —— 缓存 7 天
  5. 后缀 .html —— 缓存 2 小时(帝国 CMS 生成静态页后需要刷新)
  6. 路径 / 且带 ? 参数(动态列表页、搜索页)—— 缓存 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 泄露后被绕过
版权声明:本文来自 GJ站长论坛《帝国 CMS 怎么配合 CDN》
原文链接:https://www.gj0.com/thread-1013.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~