WordPress使用二级域名动静分离

2018-08-21 5495点热度 11人点赞 3条评论

好处

使用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/

六度

这个人很懒,什么都没留下

文章评论

  • 豆子

    这个好像是需要在同一个服务器上吧。。之前测试过分服务器分离,结果导致很多css不展示出来。也许是我没弄好。现在索性放弃分离了。

    2021-02-26
    • 六度

      @豆子 是在同一个服务器上面,不同服务没搞过,也没精力搞了。

      2021-03-02
  • 龙鲲

    重写静态资源URL测试可用,谢谢大佬 :arrow:

    2020-05-11