迫于上周 V 友说又拍云比七牛☁️ 好。整了个 WordPress + CDN 优化方案

2021-11-21 15:12:46 +08:00
 foam

长文预警! V 站排版不太好弄。原文: 用 CDN 加速 WordPress

写在前面

又拍云更香?

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

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

又拍云联盟

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

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

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

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 插件配置,都还有很多有趣的配置,本篇文章就不再多写了,毕竟我也今天刚配置。大伙自行摸索吧。

欢迎留言交流。

3058 次点击
所在节点    分享创造
7 条回复
RangerWolf
2021-11-21 20:28:50 +08:00
点赞~ 刚被安利了七牛又被又拍吸引了。。。
不过又拍已经是很多年前注册过了,不知道还有没有这个羊毛。
可惜我已经被锁定在腾讯云了~
foam
2021-11-21 20:58:08 +08:00
@RangerWolf #1 有羊毛的哈,因为不是给新人的。页脚挂个链接说明就有。
对他们来说,稳赚不赔。
soho176
2021-11-21 21:17:40 +08:00
还是腾讯云香,每个月送 20G
Pika666
2021-11-22 04:10:50 +08:00
- dogeCloud 送 20G ,包括 https ,V2EX 前两天才有他们的推广
- 字节跳动的火山引擎 X 送 10G 流量和免费图片处理,包括 https ,客服说是永久不取消

@soho176 20G 怎么来的,我只有 10G 的老用户长期免费额度
RangerWolf
2021-11-22 09:25:19 +08:00
@Pika666
@soho176 +1 我也是老用户 免费 10G 下行流量 跟 10G CDN 回源流量
zhensjoke
2021-11-22 09:40:47 +08:00
又拍云似乎是比七牛腻害点。
几年前在七牛注册绑定了域名,删除之后在又拍云无法绑定,询问两边平台客服得到结果七牛用了又拍的服务。😂😂七牛的删除是伪删除,并没有在又拍平台删除。
jsthon
2021-11-22 10:43:31 +08:00
又拍确实好用,用了快 10 年了,配置基本都是秒更新,不像某些平台需要等 2 小时
另外,又拍云 “源站资源迁移” 这个功能,不知 AWS 有没有类似的实现,将回源缓存到 bucket

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX