前言
WordPress是一个基于PHP和MYSQL等的动态程序,动态程序的每一次渲染页面HTML都在无时不刻的处于计算当中。这也使得WordPress这样的程序不适合开启CDN静态缓存。因为一旦开启,评论、最新文章等就会延后甚至出错。而开启CDN全站加速不缓存,则更是速度加慢。相当于凭空增添一个反代,有一个木桶效应,最短的木板决定你站点的速度。
所以CDN可以用于静态资源的加速,而动态资源最好从源站直接获取,这样的数据最准确。即源站只负责处理动态数据,静态资源由CDN负责返回,即为动静分离。动态资源由源站返回,而静态资源由另一个部署在CDN的域名负责。
思考
部署动静分离的方法有很多,类似的插件也不计其数。而我的方法应该是比较便捷的。为了实现动静分离,我试用过很多同步插件到云存储,再修改链接。但由于同步速度、修改链接出错、效率不高、覆盖文件类型(一般只负责jpg)等原因,效果都不尽人意。
所以我的思路是用一个CDN全站加速代理源站,然后开启静态资源全缓存,缓存时间较长,然后配合WordPress本地插件,将所有静态资源文件全部指向CDN域名,即可实现动静分离。
部署
域名
我的域名是blog.ssf.moe,我开启了一个子域名cdn.blog.ssf.moe来专门负责CDN静态资源返回。
CDN配置
我采用的是又拍云CDN+云存储,又拍云的CDN缓存可以直接存储到云存储,并且又拍云的图片可以自主处理返回WebP图片,并且这样的处理是免费的。这点是我选择又拍云的主要原因。并且又拍云的速度表现还是比较优异的。
在又拍云开启一个CDN加速,加速源为自己的服务器,加速域名为子域名,开启加速。
然后配置缓存,全局开启缓存建议7Days以上,参数全跟随,回源请求头设定自己的博客原域名。配置云存储,将资源全部存到云存储里。记得开启WebP自适应。个人觉得这个相当好用。
不要开启301跟随,这个有可能导致出错。
源站配置
源站需要采取一个插件来重写静态资源的域名。我的加速插件自带这个功能,WP-Rocket可以全局重写文件域名,将域名添加即可。清除缓存。至此可以尝试静态资源有无指向CDN。
这个动静分离这个 后面上传图片怎么同步到oss上面去呢 装插件吗
不需要 我采用的是直接CDN反代源站 每次图片上传到源站 然后采用插件修改图片链接到CDN反代域名上面 CDN域名设置了缓存 如果第一次CDN的缓存没有图片 会向源站获取图片来缓存 这样就达到了动静分离的目的 不需要任何上传插件ヾ(≧∇≦*)ゝ