将 WordPress 上的媒体数据文件存放于 OSS 不但可以提升本地存储空间、还可以降低服务器的 IO 压力,提升用户体验。同时也降低了后期进行数据迁移的难度。

使用 OSSFS 将 OSS Bucket 挂载到 WordPress 的 uploads 目录好处是:

  • 拥有一个无限大小的 uploads 目录,相当于对 WordPress 进行横向扩容。
  • 使图片、附件等通过 OSS 访问,不占用本地的计算、IO、带宽等资源。
  • 还可配置阿里云 CDN 让费用进一步降低,速度进一步加快。
  • FTP 无缝对接,您可以像原来一样使用 FTP 工具。

配置 Bucket、CDN

新建一个 Bucke,「OSS 控制台」

  1. 命名建议以反向域名的形式,也可随意。
  2. 阿里云的用户请选择与 ECS 相同的地域,其他服务商的用户随意。
  3. 储存类型请选择标准储存。
  4. 读写权限请选择 公共读

进入 Bucke 的域名管理页面,绑定一个你的域名,如 alidecdn.saintw.cc,并开启 CDN 加速。

如您的域名 DNS 服务在阿里云,可将 自动添加 CNAME 记录 的选项打开,否则请在稍后手动添加 CNAME 记录。

如未自动添加或无法自动添加请手动打开「CDN 控制台」。

获取 CNAME 地址到域名服务商的 DNS 管理系统添加对应的主机记录。

挂载 Bucket

  • 挂载目录:您站点目录中的 /wp-content/uploads
  • 挂载用户:www
  • 挂载权限:0755

将创建的 OSS Bucket 依上方信息按下方文章配置挂载。

VPS 扩容之 OSSFS

替换媒体资源的域名

/**
 * WordPress CDN 代码版 By 张戈博客
 * 原文地址:http://zhangge.net/4905.html
**/
function CDN(){
    function Rewrite_URI($html){
        $domain = 'www\.saintw\.cc';   //填写主站域名,小数点前需要加上反斜杠转义
        $static = 'alidecdn.saintw.cc'; //填写静态文件域名
        //更多静态资源需要替换,可以将后缀加到后面的括号,使用分隔符分割
        $html = preg_replace('/http(s|):\/\/'.$domain.'\/wp-content\/uploads\/([^"\']*?)\.(jpg|png|gif|bmp|jpeg|css|js)/i','//'.$static.'/$2.$3',$html);
        return $html;
    }
    if(!is_admin()){
        ob_start("Rewrite_URI");
    }
}
add_action('init', 'CDN');

将上方代码修改后粘贴到你主题的 functions.php 文件内即可。

完成部署后,网站的前台页面中的静态资源链接就全部换成了 CDN 域名了。