非插件使用又拍云upyun静态CDN加速wordpress网站

一直都把图片托管在又拍云的服务上,而且在用又拍云插件for wordpress,都说wordpress插件安多了不好,其实我也不想多安,可是要使用就得安。最近登录又拍云发现推出了静态cdn服务,于是了解了下:

静态 CDN 空间:资源文件全都存放在源站,无需重新上传至 UPYUN 服务器,适合加速纯静态资源,比如图片、文档、音视频等。拥有「自定义版本」功能。

看起来貌似不错,好像七牛云存储就是这样的(七牛的插件for wordpress就是这个功能的),试想着如果这这样就可以不用使用插件了,果断先关闭又拍云for wordpress插件,登录又拍云后台创建了静态cdn空间

20150917193254

创建完根据帮助设置了回源等信息,(不用管这是什么,按着设置就可以,我一开始也不知道,试了好多次才设置好了)回源Host,选自定义填写自己的域名,源站线路,根据自己的主机选,我用的是阿里云的,所以选BGP,回源地址可以填写主机ip,或者域名也可以。
20150913222150

设定好后,又拍云上的基本上就完成了,如果图片地址想用自己域名,那就绑定一个(使用过的都会,没使用过的,看看后台提示也就可以了,这里就不说了)。

又拍云上的完成后,下来是对本站进行设置,只需在主题functions.php添加一段代码即可搞定

以下代码来自:https://kn007.net/topics/cdn-share-my-hook-function/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//cnd 加速 到upyun
define('FocusCDNHost','http://veryer.cn');//wordpress网站网址
define('FocusCDNRemote','http://cdn1.veryer.cn');//cdn域名
define('FocusCDNIncludes','wp-content/uploads,/wp-content/plugins,wp-content/themes/xiu/images,wp-includes');//设置加速目录
define('FocusCDNExcludes','.php|.xml|.html|.po|.mo|.pot|.xsl|.txt|.htm|.gitignore|.md|.eot|.svg|.ttf|.woff');//设置文件白名单
define('FocusCDNRelative','');//Check this if you want to have links like <wp -content/abc.png> rewritten - i.e. without your blog's domain as prefix.
 
function do_cdnrewrite_ob_start() {
$rewriter = new FocusCDNRewriteWordpress();
$rewriter->register_as_output_buffer();
}
add_action('template_redirect', 'do_cdnrewrite_ob_start');
 
class FocusCDNRewriteWordpress extends FocusCDNRewrite
{
function __construct() {
$excl_tmp = FocusCDNExcludes;
$excludes = array_map('trim', explode('|', $excl_tmp));
 
parent::__construct(
FocusCDNHost,
FocusCDNRemote,
FocusCDNIncludes,
$excludes,
!!FocusCDNRelative
);
}
public function register_as_output_buffer() {
if ($this->blog_url != FocusCDNRemote) {
ob_start(array(&$this, 'rewrite'));
}
}
 
}
 
class FocusCDNRewrite {
var $blog_url    = null;
var $cdn_url     = null;
var $include_dirs   = null;
var $excludes    = array();
var $rootrelative   = false;
 
function __construct($blog_url, $cdn_url, $include_dirs, array $excludes, $root_relative) {
$this->blog_url   = $blog_url;
$this->cdn_url    = $cdn_url;
$this->include_dirs  = $include_dirs;
$this->excludes   = $excludes;
$this->rootrelative  = $root_relative;
}
 
protected function exclude_single(&$match) {
foreach ($this->excludes as $badword) {
if (stristr($match, $badword) != false) {
return true;
}
}
return false;
}
 
protected function rewrite_single(&$match) {
if ($this->exclude_single($match[0])) {
return $match[0];
} else {
if (!$this->rootrelative || strstr($match[0], $this->blog_url)) {
return str_replace($this->blog_url, $this->cdn_url, $match[0]);
} else {
return $this->cdn_url . $match[0];
}
}
}
 
protected function include_dirs_to_pattern() {
$input = explode(',', $this->include_dirs);
if ($this->include_dirs == '' || count($input) < 1) {
return 'wp\-content|wp\-includes';
} else {
return implode('|', array_map('quotemeta', array_map('trim', $input)));
}
}
 
public function rewrite(&$content) {
$dirs = $this->include_dirs_to_pattern();
$regex = '#(?< =[(\"\'])';
$regex .= $this->rootrelative
? ('(?:'.quotemeta($this->blog_url).')?')
: quotemeta($this->blog_url);
$regex .= '/(?:((?:'.$dirs.')[^\"\')]+)|([^/\"\']+\.[^/\"\')]+))(?=[\"\')])#';
return preg_replace_callback($regex, array(&$this, 'rewrite_single'), $content);
}
 
}
 
代码完
</wp>

如果代码有问题请到这里复制:https://github.com/veryer/wordpress/blob/master/upyun-cdn-for-wordpress.php

ps:由于我用的主题是xiu主题,貌似评论的js不能被加速,所以我就没有把主题加速,只是选择性的加速了一些文件js/css。

添加好后,发现果真可以了,使用的xiu主题竟然也不用再主题后台设置图片使用外链就可以直接cdn到又拍云.

未经允许不得转载:自由草 » 非插件使用又拍云upyun静态CDN加速wordpress网站

赞 (3)
  1. 开始也看到很多人说插件不要装太多影响速度什么的,于是就删掉一些好好像用不上的插件,结果删完发现好多功能乱套了,于是又默默的装回来,这个方法看起来不错可以试试看