WordPress简单开启动静态分离

前面已经给大家提供了三种缓存方案,随便挑选一种即可让你的网站加载速度快如闪电,还没使用缓存的可以查阅以下文章

加了缓存之后网站速度已经很快了,如果想要锦上添花那么就需要用到我们的动静态分离,什么叫动静态分离呢?就是把网站的动态内容和静态内容分开,网站的动态内容就是需要我们服务器实时运算的内容,而静态内容就是网站上图片,视频,CSS,JS等等一系列不需要服务器实时运算的内容。我们将网站进行动静分离之后动态和静态资源会由两个域名来提供,比如本站的网址是www.hongnote.cn ,静态资源地址为img.hongnote.cn,你随便选张本站的图片查看链接就会发现图片的url为img前缀的这个域名。这样做有什么好处呢,我可以直接在CDN上把img的这个静态资源的域名把它设为全部缓存,这样访问本站的静态资源基本上都是CDN节点提供,为服务器减轻压力。话不多说,马上开始部署教程

宝塔新建站点

宝塔新建一个站点,比如img.abc.com,或者其它的域名都可以

宝塔新建静态资源站点

配置vhost文件

将以下代码添加到静态资源的vhost文件中,在#SSL-END下面添加即可

# 图片等静态资源请求代理到本地主站(关键配置)
        location ~* .*\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                add_header Access-Control-Allow-Origin *; # 解决字体跨站问题
                add_header Access-Control-Allow-Headers X-Requested-With;
                add_header Access-Control-Allow-Methods GET,OPTIONS;
                proxy_pass https://127.0.0.1; # 如果是启用了 https 的网站,这里最好改成 https://127.0.0.1,避免主站加了非 https 协议的跳转配置,导致不成功。
                proxy_set_header  X-Forwarded-For $remote_addr;
                proxy_redirect off;
                proxy_set_header Host www.hongnote.cn; # 这里改为实际主站域名(必须)
                expires max;                       # 设置浏览器 304 缓存为最长期限
        }
        # 为这个二级域名额外设置一个 robots 文件
        location ~ (robots.txt) {
                rewrite /robots.txt /imgrobots.txt last;  # 在网站根目录新增一个 imgrobots.txt,内容和七牛 CDN 类似,禁止搜索引擎抓取非静态资源
        }
        # 如果通过静态域名访问的是非静态资源,比如访问了我们的文章页面,则跳到主站对应的页面。
        location / { 
            if ( $request_uri !~* .*\.(js|css|png|jpeg|jpg|gif|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)) 
                {
                rewrite ^(.*)$ $scheme://www.hongnote.cn$1 permanent; # 域名 修改为实际主站域名
            }
        }

静态资源robots.txt文件布置

静态网站根目录添加一个imgrobots.txt文件,配置如下,用于防止搜索引擎抓取除了静态资源以外的其它资源

User-agent: *
Allow: /robots.txt
Allow: /wp-content/
Allow: /*.png*
Allow: /*.jpg*
Allow: /*.jpeg*
Allow: /*.gif*
Allow: /*.bmp*
Allow: /*.ico*
Allow: /*.js*
Allow: /*.css*
Disallow: /

替换主站静态资源

很多缓存插件比如wp super cache等都提供替换静态资源链接的功能,如果不想使用插件那可以通过下面纯代码方法实现静态资源链接替换

将以下代码添加到主题的functions.php文件中,自行替换代码中域名

function QiNiuCDN(){
    function Rewrite_URI($html){
        $domain = 'www\.hongnote\.cn';   //填写主站域名,小数点前需要加上反斜杠转义
        $static = 'img.hongnote.cn'; //填写二级静态域名
        //更多静态资源需要替换,可以将后缀加到后面的括号,使用分隔符分割
        $html = preg_replace('/http(s|):\/\/'.$domain.'\/wp-([^"\']*?)\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)/i','//'.$static.'/wp-$2.$3',$html);
 
        return $html;
	}
    
    if(!is_admin()){
        ob_start("Rewrite_URI");
    }
}
 
add_action('init', 'QiNiuCDN');

大功告成,再次打开你的网站你的图片链接就是由静态资源域名提供了,因为资源都是在同一个服务器里面,如果不使用CDN话基本没什么作用,只是看着好看而已

要注意的是这种动静分离是不彻底的,因为本质上资源还是在一个服务里面的,需要配合CDN使用,主站托管在国外服务器的可以参照本站方法将静态资源用一个备案的域名接入CDN来加速,这样你的网站速度在国内访问也会快很多。

也不用顾虑缓存规则会不会影响网站内容,直接将静态资源域名的CDN设置为全部缓存即可

版权声明:
文章标题:WordPress简单开启动静态分离
文章作者:HONG
文章链接:https://www.hongnote.cn/109.html
CC共享协议许可协议:BY-NC-SA 4.0
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录