WordPress使用二级域名动静分离

好处

使用CDN以后,要加速静态资源,最好将静态资源都放在一个单独的二级域名下,比如“static.234du.com”,这样CDN只加速这一个域名下的图片等文件,网页文件从主站下载,就能大大减轻带宽的压力。

方法

假如主域名和静态文件域名分别为www.234du.com和static.du.com,需要完成下面几件事情。

如果开启https访问,并且不支持泛域名,需要为静态文件域名申请一个证书。

网站配置

静态文件域名和主域名分别配置nginx站点,并且设置为相同的根目录

静态文件域名配置:

需要注意的几点:

root 指令需要设成和主域名一样的根目录
location ~* .*\.(gif|jpg|jpeg|png|bmp)?$的指令里利用image_filter来生成缩略图,缩略图处理必须在静态资源域名下处理。
location ~ .*\.(eot|otf|ttf|woff|woff2)?$的指令里要记得加上Access-Control-Allow-Origin的http头部,不然会出现字体加载的跨域错误。
location = /robots.txt的指令里禁止搜索引擎爬虫抓取。
然后是主域名的nginx配置,这里重点是将所有静态资源的处理都移到了二级域名去处理,因此只留下了动态资源处理和fastcgi缓存的部分。

主域名配置:

网站根目录和静态文件域名的一样。

重写静态资源URL

一种考虑是通过直接修改数据库所有静态资源URL,全部批量替换为static.234du.com开头,那么以后新的文章还是不能自动变成二级域名,网上查到一种方法是通过修改wordpress某个地方,暴露出设置选项能全局修改媒体库的URL,这种方法我没有尝试。

另一种方法是直接在主题的代码中自动重写所有静态资源的域名,一劳永逸而且随时可以改成别的域名。
将下面的代码加入主题中functions.php,放在 ?>前面。
这样在网页中所有的静态资源(jpg,js,css,gif,png,jpeg,woff)都自动地替换成为static开头的域名。如果有需要还可以加入其它种类的资源,比如ttf,mp4等文件。

在wp-config.php里定义COOKIE_DOMAIN 常量来限制cookie的作用域,因此当浏览器加载静态资源域名里的内容时,request header里不会带有主域名的cookie,节约了传输带宽,达到提高加载速度的目的。

本文转载:

https://www.feiqy.com/wordpress-static-separation/

点赞

发表评论

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