V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
foam
V2EX  ›  分享创造

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

  •  
  •   foam · 56 天前 · 1764 次点击
    这是一个创建于 56 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    写在前面

    • 如果你已经有 CDN ,可以跳过 又拍云 部分,直接看插件配置部分。
    • 本篇文章对所有 CDN 都适用,这里以 又拍云 为例子作说明

    又拍云更香?

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

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

    又拍云联盟

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

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

    流程很简单。注册账号、在你的网站页脚添加又拍云的链接;填申请表。我是周六申请的,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 插件配置,都还有很多有趣的配置,本篇文章就不再多写了,毕竟我也今天刚配置。大伙自行摸索吧。

    欢迎留言交流。

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

    @soho176 20G 怎么来的,我只有 10G 的老用户长期免费额度
    RangerWolf
        5
    RangerWolf  
       55 天前
    @Pika666
    @soho176 +1 我也是老用户 免费 10G 下行流量 跟 10G CDN 回源流量
    zhensjoke
        6
    zhensjoke  
       55 天前 via Android
    又拍云似乎是比七牛腻害点。
    几年前在七牛注册绑定了域名,删除之后在又拍云无法绑定,询问两边平台客服得到结果七牛用了又拍的服务。😂😂七牛的删除是伪删除,并没有在又拍平台删除。
    jsthon
        7
    jsthon  
       55 天前
    又拍确实好用,用了快 10 年了,配置基本都是秒更新,不像某些平台需要等 2 小时
    另外,又拍云 “源站资源迁移” 这个功能,不知 AWS 有没有类似的实现,将回源缓存到 bucket
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   991 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:42 · PVG 03:42 · LAX 11:42 · JFK 14:42
    ♥ Do have faith in what you're doing.