WordPress又拍云存储

又拍云提供免费的对象存储与分发服务。通过将资源文件存放在又拍云上,可以节省服务器磁盘和流量并加快网站速度。但是,时至今日,WordPress并没有能用的插件(WordPress5.2.1)。以下提供了一个让WordPress使用又拍云的方案,通过ftpfs和filter系统,不需要使用任何WordPress插件,并完美支持各版本WordPress。

ftpfs

首先我们需要安装curlftpfs。在CentOS7中,运行yum install curlftpfs安装curlftpfs。

运行mkdir -p /mnt/upyun,我们首先将又拍云存储挂载在这里进行WordPress内容的转移。运行curlftpfs -o allow_other v0.ftp.upyun.com -o user=<operator>/<bucket> /mnt/upyun挂载。运行cp -r /var/www/wordpress/wp-content/uploads/* .转移文件。

运行umount /mnt/upyun卸载。运行rm -rf /var/www/wordpress/wp-content/uploads/*删除原有文件。运行curlftpfs -o allow_other v0.ftp.upyun.com -o user=<operator>/<bucket> /var/www/wordpress/wp-content/uploads将又拍云储存挂载到WordPress的upload目录。这样,对于WordPress来说,uploads文件夹并没有变化,但是事实上这些文件已经转存到又拍云中了。

替换链接

接下来我们需要将网站中所有对这些上传资源的引用链接都变成又拍云的外链。修改主题的functions.php,增加以下内容:

define('ORIGIN_UPLOAD', 'https://YOUR-SITE/wp-content/uploads');
define('CDN_UPLOAD', 'https://YOUR-UPYUN-DOMAIN');
function cdn_replace($url) {
	$url = str_replace(ORIGIN_UPLOAD, CDN_UPLOAD, $url);
	return $url;
}
add_filter('wp_get_attachment_url', 'cdn_replace');
function cdn_srcset($sources) {
	foreach ( $sources as &$source ) {
		$source['url'] = str_replace(ORIGIN_UPLOAD, CDN_UPLOAD, $source['url']);
	}
	return $sources;
}
add_filter( 'wp_calculate_image_srcset', 'cdn_srcset');

刷新页面,可以发现图片等附件的加载速度明显提升。

发表评论

电子邮件地址不会被公开。 必填项已用*标注