wordpress优化,用CDN自建动静分离。

摘要: 这里主要讲动静分离的方法,如果你是全部走 CDN,下面的内容可以不用看了,试试上面提到的 CDN 吧。 因为我觉得对于 WP 这种动态站没必要全站走 CDN,只需要在原站开个 Memcached 对象缓存和 PHP 脚本缓存 —— OPCache 就可以了,再把js、css、图片等静态资源牵到 CD...

这里主要讲动静分离的方法,如果你是全部走 CDN,下面的内容可以不用看了,试试上面提到的 CDN 吧。

因为我觉得对于 WP 这种动态站没必要全站走 CDN,只需要在原站开个 Memcached 对象缓存和 PHP 脚本缓存 —— OPCache 就可以了,再把js、css、图片等静态资源牵到 CDN,就能很好的起到提速的效果。

我也没用oss等云对象存储,感觉没必要,如果不用oss或者其他什么原因可能还要全部下载回服务器,如果你用的oss等云对象存储服务,括彩云的 CDN 可以免腾讯,火山的对象存储公网流出流量(免流方法),阿里的还在对接。

方法很简单,以前也出过用又拍的 CDN 做动静分离的教程。

原站准备

原站操作基于小白专用的宝塔,如果各位大佬自建的环境请自行处理。

1、给wp目录 wp-content 添加一个域名,照下图操作,在宝塔站点设置里的子目录绑定里添加一个其他的域名,如我添加的是 cdn.info35.com。

2、为这个域名增加伪静态规则
规则内容为:

#注意把下面的 https://www.info35.com 和 https://cdn.info35.com 替换为你自己的域名
location / {
    add_header 'Access-Control-Allow-Origin' 'https://www.info35.com';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
    add_header 'Access-Control-Allow-Credentials' 'true';
}
rewrite ^/wp-content/(.*) https://cdn.info35.com/$1 permanent;

location / 里面的是增加了跨域,因为资源域名不一样,如果调用了字体等资源,需要设置允许的域名为你网站的域名。

最后一行配置的作用是将所有以 /wp-content/ 开头的请求重定向到 https://cdn.info35.com/ 下对应路径的资源。

CDN设置

各厂商略有不同,请自行设置cdn.info35.com

替换静态资源链接

这一步只需要在服务器里添加一段代码就行,在你用的主题的文件夹里面的 functions.php 文件里添加。

/**
 * 启用静态资源cdn
 */
function io_rewrite_cdn_url(){
    function io_rewrite_assets($html)
    {
        $suffix      = 'jpg|jpeg|png|gif|js|css|ttf|woff|woff2|svg|eot'; //填写静态资源后缀
        $static      = 'https://cdn.info35.com'; //填写加速的静态域名
        $pattern     = '/' . str_replace('/', '\/', home_url()) . '\/wp-content([^"\']*?)\.(' . $suffix . ')/i';
        $replacement = $static . '/wp-content$1.$2';
        $html        = preg_replace($pattern, $replacement, $html);
        return $html;
    }
    if (!is_admin()) {
        ob_start("io_rewrite_assets");
    }
}
add_action('init', 'io_rewrite_cdn_url',55);

 
注意修改7、8行的代码

完成了,体验免费加速的快乐吧。