将 WordPress 上的媒体数据文件存放于 OSS 不但可以提升本地存储空间、还可以降低服务器的 IO 压力,提升用户体验。同时也降低了后期进行数据迁移的难度。
使用 OSSFS 将 OSS Bucket 挂载到 WordPress 的 uploads 目录好处是:
- 拥有一个无限大小的 uploads 目录,相当于对 WordPress 进行横向扩容。
- 使图片、附件等通过 OSS 访问,不占用本地的计算、IO、带宽等资源。
- 还可配置阿里云 CDN 让费用进一步降低,速度进一步加快。
- FTP 无缝对接,您可以像原来一样使用 FTP 工具。
配置 Bucket、CDN
新建一个 Bucke,「OSS 控制台」。
- 命名建议以反向域名的形式,也可随意。
- 阿里云的用户请选择与 ECS 相同的地域,其他服务商的用户随意。
- 储存类型请选择标准储存。
- 读写权限请选择 公共读。
进入 Bucke 的域名管理页面,绑定一个你的域名,如 alidecdn.saintw.cc,并开启 CDN 加速。
如您的域名 DNS 服务在阿里云,可将 自动添加 CNAME 记录 的选项打开,否则请在稍后手动添加 CNAME 记录。
如未自动添加或无法自动添加请手动打开「CDN 控制台」。
获取 CNAME 地址到域名服务商的 DNS 管理系统添加对应的主机记录。
挂载 Bucket
- 挂载目录:您站点目录中的 /wp-content/uploads
- 挂载用户:www
- 挂载权限:0755
将创建的 OSS Bucket 依上方信息按下方文章配置挂载。
替换媒体资源的域名
/**
* 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 域名了。