用 CDN 加速 WordPress
本文最后更新于 512 天前,其中的信息可能已经有所发展或是发生改变。

写在前面

  1. 如果你觉得这篇文章对你有所帮助,并且想要使用又拍云,可以通过我这个 -> 链接 <- 注册,你我都能得到 不要白不要的 奖励。(注意,又拍云绑定的域名需要是备案过的)
  2. 如果你已经有 CDN ,可以跳过 又拍云 部分,直接看插件配置部分。
  3. 本篇文章对所有 CDN 都适用,这里以 又拍云 为例子作说明

又拍云更香?

上周在 V 站 发了个帖,安利了我写的一个 Alfred 插件,该插件可以方便地将图片上传到七牛云,顺便向大家安利了七牛。马上有 V 友跳出来说又拍云更香,免费流量比七牛云多 5 G,HTTPs CDN 流量也是算在免费套餐里边的。

趁着周末有点时间,去白嫖下又拍云。

又拍云联盟

没错。小标题 是 又拍云对开发者的白嫖活动的名字。我们加入这个联盟就能获得:

  • 10 GB 免费存储
  • 每个月 15 GB 免费 CDN 流量(HTTP[s] 都可以)

流程很简单。注册账号、在你的网站页脚添加又拍云的链接;填申请表。我是周六申请的,1个小时左右就收到了审核通过的通知。

Update(2022/12/02): 大家要留意一年的到期时间,快到期的时候去 联盟页面 申请续期。否则欠费就不好了,我就迟了几天,欠费 2 分钱 🙂

审核通过后,会发放一年份的代金券给你,到期再次申请即可。

CDN 配置

系统设计

不想看我啰嗦的同学,可以跳过系统设计这部分。配置部分以 又拍云 为例子叙述

从上图的设计可以看出,我把文件分为三类:

  1. 动态接口/文件:例如 WordPress 中的 php 接口。这类请求是动态的,不适合放到 CDN 缓存中(一直回源,没有意义)。域名使用 foamzou.com ,该域名解析到我的服务器里,执行 WordPress 程序
  2. 适合短期缓存的文件:指的是短时间不会发生变化,但仍然有可能变化的文件。例如 WordPress 的系统库文件
    • 域名使用:cdn.foamzou.com,该域名做个 cname 解析到 CDN 服务
    • 当 CDN 未命中资源,则回源到 cdn.foamzou.com ( IP: 回源设置的 IP )
  3. 适合长期缓存的文件:指的是几乎不会发生变化的资源文件。例如图片、第三方 css、js资源
    • 域名配置同 2
    • 给 CDN 配置一个对象存储桶
      • 配置指定的路径从桶里取资源,没取到再回源到服务器
      • 从服务器取到数据,存储到桶里
    • 好处有 2 点
      1. 减少回源次数(毕竟对于同一个文件只会回源 1 次),节省服务器带宽
      2. 回源速度快(我在又拍云创建了个对象存储桶,CDN 和 存储 在同一个区域,速度当然比跨个公网访问我服务器快)

创建 CDN 服务

创建页面

  1. 加速域名:填一个新的域名,后面需要将该域名解析到 CDN 服务
  2. 源站设置
    1. 回源协议:我选了 HTTPS,如果你的源站点没有配置 SSL,就选 HTTP 吧。
    2. 源站地址:填你 WordPress 服务所在的域名。这里要注意,加速域名源站地址 不能填同一个,否则就重定向循环了。
      • 这里也可以填域名,为了方便,我填了 foamzou.com。这样 CDN 回源时会先将 foamzou.com 解析为 IP 再用来请求 cdn.foamzou.com。
      • 这里又拍云产品设计得不好,容易让人误以为会回源到 foamzou.com,其实不是的。到时候会这样回源请求: curl -H"Host: 加速域名" http[s]://源站地址IP[或者 源站地址域名的IP]/xxx
      • 也就是说,我还需要在我的 nginx 配置里的 server_name 多添加一个 cdn.foamzou.com

添加 CDN 域名解析

又拍云域名管理 页面,找到 cname 域名。然后到你的域名解析后台,添加一条 cname 记录。

添加 SSL 证书

到 HTTPS tab,给你的域名添加一个 SSL 证书。你可以添加自有证书,也可以在又拍云申请一个免费证书。具体步骤这里就不赘述了,配合去域名解析添加个 TXT 记录就行。

创建云存储

到这个 页面 创建服务。即,上边 方案设计 里的 Object Storage Bucket。我们期望将一般不会变化的资源放到这里。

配置回源到 bucket

回源管理 页面,开启 源站资源迁移

资源路径,我填写了 /wp-content/* , /wp-includes/* 。我希望这两个路径的资源缓存到 bucket 里去。

CDN 其他配置项

又拍云还有很多配置项,例如支持 webp 响应等,大伙自行摸索吧。

至此,CDN 部分配置完毕。但此时面临一个问题,我们配置的 CDN 域名是 cdn.foamzou.com 。而此时 资源的域名是 foamzou.com。例如这张图片:https://foamzou.com/wp-content/uploads/2021/11/emoji-bg.jpeg。

WordPress 是否有插件,能够将指定路径的域名替换调呢?这样,我们可以通过 https://cdn.foamzou.com/wp-content/uploads/2021/11/emoji-bg.jpeg 访问资源。有的,WP Super Cache!

配置 WP Super Cache 插件

安装

官方下载页 下载插件,放到服务器 WordPress 目录下的 wp-content/plugins 目录里。解压它!

确保 wp-content 目录的用户组是 www:www (以你实际 php-fpm 用户组为准),目录权限设置为 755 。确保 fpm 有权限写该目录。

编辑 wp-config.php ,在最后一行的 require 上一行,加上

define('WP_CACHE', true);
define('WPCACHEHOME', '/your-site/wp-content/plugins/wp-super-cache/');

拷贝文件

cp  wp-content/plugins/wp-super-cache/wp-cache-config-sample.php  wp-content/wp-cache-config.php

到 WP 管理后台 – 插件管理,启用该插件。

配置

WP 管理后台 – 设置页面,找到 WP Super Cache 设置 页面。

启用缓存功能。注意每个 tab 都要点底下的 保存/更新 按钮

开启 CDN 支持。该插件会将 包含目录 里 URL 的 Site URL 替换为 Off-site URL

最后

至此。 wp-content 和 wp-includes 底下的文件将走 CDN 加速。

无论是 CDN 配置 还是 WP Super Cache 插件配置,都还有很多有趣的配置,本篇文章就不再多写了,毕竟我也今天刚配置。大伙自行摸索吧。

欢迎留言交流。

评论

  1. wking
    Windows Chrome
    2年前
    2022-4-13 11:33:01
    1. 文件是否到桶里,是根据目录决定的?而不是根据扩展名?
    2. 我在doge云翻了半天,发现对象存储没有自动回源功能,只能手动上传……
    • foam
      foam 博主
      Macintosh Chrome
      2年前
      2022-4-13 22:56:58

      1. 看起来,又拍云该功能的特性,不支持只根据扩展名使用。不过,如果你能确定目录层级,可能可以这样 /*/*/*.jpg ,我没试过,如果满足你的诉求,可以试试
      2. 多吉云我没用过,你可以翻翻 CDN 看看

    • 云间网
      Safari
      1年前
      2023-1-03 18:40:01

      多吉云要标准储存桶才可以回源

    • 云间网
      Safari
      1年前
      2023-1-03 18:40:56

      我最近也打算换到多吉云储存桶,想找个仅仅有cdn域名这个选项的插件😂😂

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇