1.
首先判断你的网站类型:是完整静态导出(如WP2Static、Simply Static)还是动态WordPress但使用静态缓存插件(如WP Super Cache、W3 Total Cache、WP Rocket)。决定后再选择CDN策略:完全静态站点可把HTML与资源都交给CDN缓存;动态站点通常只缓存静态资源(CSS/JS/图片)与缓存页面的HTML,但需排除登录、购物车等动态URL。
小分段:准备信息清单——站点域名、主机IP、是否有子域(如cdn.example.com)、SSL证书方式(主机托管/CDN签发/Let's Encrypt)。
2.
常见CDN:Cloudflare、Fastly、KeyCDN、BunnyCDN、腾讯云/阿里云CDN。推荐选择支持自签发证书或自助HTTPS的服务。注册账号后创建一个Pull Zone(CDN从你的源站拉取资源)或创建自定义域名的CNAME记录指向CDN提供的域名。
小分段:操作步骤示例——在CDN控制台新建Pull Zone,填写Origin为你的主机域名或IP;CDN会生成一个二级域名(例如xyz.cdnprovider.net),然后在DNS里为cdn.example.com添加CNAME -> xyz.cdnprovider.net。
3.
在DNS托管处添加CNAME记录:名称填写cdn(或静态域名),值填写CDN提供的域名。对于完全走CDN(如Cloudflare的代理模式),将根域或www代理开启。SSL方面,优先使用CDN提供的免费证书或上传你自己的证书;若使用自定义域的CNAME,确保证书包含该自定义域。
小分段:如果你使用直连源站拉取(非代理),确保源站也可以响应HTTPS(即安装Let's Encrypt或主机面板证书),并在CDN设置里启用“Origin HTTPS”以避免混合内容或源站被拒绝。
4.
若你使用静态导出插件(WP2Static、Simply Static):导出目标选择自定义域cdn.example.com或导出到CDN支持的存储(如S3/Wasabi再配合CDN)。导出后在CDN中指向该存储或上传导出文件。若使用缓存插件(W3 Total Cache/WP Super Cache/WP Rocket):启用Page Cache、Browser Cache、Minify(谨慎)、并设置缓存有效期与gzip压缩,配置“Rejected URLs”排除/wp-admin、/wp-login.php、cart、checkout等。
小分段:在插件中设置CDN域名(例如cdn.example.com)用于替换静态资源URL(Replace site URL for CSS/JS/Images),并测试替换是否正确,不要替换API或动态请求。
5.
对于伪静态站点,CDN需要能够正确回源到原始HTML或静态目录。Apache示例(.htaccess)简要:保留对/wp-admin和/wp-login.php的例外;对静态资源设置长缓存;对Pretty Permalinks保留Rewrite规则。nginx示例:location ~* \.(css|js|jpg|png|gif|svg)$ { expires 30d; } location / { try_files $uri $uri/ /index.php?$args; }。
小分段:如果是纯静态导出,确保CDN的Origin指向导出后的目录(或存储桶),并把默认文档设置为index.html;如果使用代理模式,保持源站Rewrite规则,CDN只做缓存层。
6.
在CDN控制台与源站配置一致的缓存头很重要。静态资源可设置Cache-Control: public, max-age=31536000, immutable;HTML页面建议较短缓存或使用stale-while-revalidate策略。启用GZIP或Brotli压缩以节省带宽。设置CDN自动回源时携带合适的请求头(Host、X-Forwarded-For),并开启“Origin Shield”/回源保护以降低源站压力。
小分段:配置缓存清理策略(Purge API或控制台一键清空),并设置文件更新时自动清理对应路径或全量清理的Webhook(例如在部署脚本里调用CDN清理接口)。
7.
检查点清单:DNS生效(dig或nslookup验证CNAME)、HTTPS证书是否覆盖自定义域、资源URL是否替换为cdn.example.com、登录/后台是否被错误缓存。使用浏览器开发者工具查看请求Header(Response里的CF-Cache-Status/ X-Cache等),确认缓存命中率与TTL。
小分段:常见问题与解决——页面为空白:检查回源是否返回index.html;动态页面被缓存:在CDN中添加缓存排除规则或设置Cookie/Query String缓存策略;图片404:确认CNAME与存储路径一致且CDN已同步。
8.
答:当你通过静态化插件导出新HTML后,应将导出文件上传到CDN指向的存储或源站目录,然后调用CDN的Purge(清理)API清除对应路径或目录缓存。也可配置CDN基于文件版本(在资源URL上加入hash)来避免手动清理,这样更新后的文件会因不同URL自动生效。
9.
答:在CDN或缓存插件中明确排除带有WordPress登录cookie(如wordpress_logged_in_)或特定路径(/wp-admin、/wp-login.php、/cart、/checkout)的请求不被缓存。同时在CDN中启用“Bypass cache on cookie”规则或设置Cache-Control: no-cache为这些页面的响应头,确保用户始终看到最新动态内容。
10.
答:通常只需确保.htaccess的Rewrite规则仍能让CDN回源获取正确的index.html或index.php;为静态资源添加长缓存头并排除后台路由即可。如果你把静态文件迁移到CDN/存储,建议在.htaccess中加入资源的短路或重写规则以避免对源站重复请求,必要时在CDN侧配置回源路径替换。
