WordPress博客的加速可以说是老生常谈了,在这里我分享一下我博客的分享技术。 我采用的加速技术主要是wordpress的缓存插件,动静分离和腾讯云CDN。
1.我安装的wordpress缓存插件
Autoptimize
这个插件整合并压缩 CSS 和 JavaScript 代码,可以节约CSS和JS的加载时间。我的配置如下:
- 优化HTML,JS,CSS
- Aggregate JS-files
- 在 <head> 强制 JavaScript?
- 排除脚本:seal.js, js/jquery/jquery.js
- Aggregate CSS-files?
- 生成数据: 图片URL
- 排除CSS:wp-content/cache/, wp-content/uploads/, admin-bar.min.css, dashicons.min.css
- 保存聚合脚本/CSS为静态文件?
- 优化登陆用户
- Combine and preload in head (fonts load late, but are not render-blocking)
- 同时移除emojis
- 删除静态文件中的查询字符串
WP Super Cache
这个是Wordpress官方推荐的静态缓存插件。比较消耗资源(当初在万网的虚拟主机启用这个插件,就因为负载太大暂停了我的服务),但是效果还是很明显,推荐安装。 我的配置如下:(启用了Nginx的专家模式,需要配置伪静态)
- 不要为已知用户缓存。 (推荐)
- 不要为 GET 请求缓存。(地址结尾为?x=y)
- 压缩页面以便让来访者更快浏览。(推荐)
- 缓存包含页面内容的 HTTP 头(headers)文件
- 缓存重建。当新缓存生成时调用缓存文件给匿名用户。(推荐)
备注:如果采用PHP缓存模式,可以勾选: 304未修改浏览器缓存。表示网页自从它最后一次请求后未被修改。 (推荐)
- 当有新文章或页面的发布或更新时清除之前的缓存文件。
- 首页额外检查。 (极少数情况下会停止对首页的缓存) (推荐)
- 当某页面有新评论时,只刷新该页面的缓存。
在服务器负载能力较大的服务器上面,还推荐打开预缓存模式。
本站固定链接:/archives/%post_id%.htm
在支持对象缓存的服务器上,安装对应的对象缓存插件后,可以打开WP Super Cache的对象缓存模式。本站采用Redis对象缓存。
Super Static Cache
这个是静态缓存插件,可以将页面生成html,彻底脱离数据库。本插件和WP Super Cache只能安装一个。
2.wordpress动静分离 – 单独加速静态资源
从本部分开始,建立在域名已经备案的基础上。如果您的主站无法备案,可以单独准备一个备案的网站用于静态资源加速,可以显著提高主站打开速度。
wordpress动静分离我用的是nginx,腾讯云CDN,WP Super Cache。
备注:本站原来的方案是采用七牛的对象存储的镜像存储功能,现在从2019年3月1日起七牛融合CDN回源流量开始收费,因此本站开始寻找代替方案。
1)在主站之外,新设置一个nginx监听站点,域名比如static.yourwebsite.com这种,配置好SSL证书,设置网站为纯静态站点(不启用php)。
2)nginx配置文件中加入一条
代码语言:javascript复制 location ~ .*.(php)?$
{
return 404;
}
3)启用腾讯CDN。腾讯CDN提供了HTTPS免费额度,腾讯云CDN的回源IP直接设置为你的主机即可。 腾讯云CDN配置如下(仅适用于静态资源加速CDN站点):
- 缓存内容all,时间100天
- 开启防盗链配置(详细配置参考第三部分)
- 过滤参数/视频拖拽
- IP访问限制频率(详细说明参考第三部分)
4)设置WP SUPER CACHE,在CDN标签页中输入域名B即可,保存后生效。
- 排除里面建议设置“.php.php,.html,.xml,.txt”,尤其是.html,否则会造成部分链接打开不正常。
如果没有安装WP SUPER CACHE,推荐使用CDN Enabler插件开启CDN功能,配置方法相同。
Autoptimize插件也应该对应设置CDN,另外推荐在 Autoptimize中 开启预先连接到第三方域(高级用户),写入静态域名。
3.主站腾讯云CDN配置
第二部分介绍的腾讯云CDN配置有些简略,在这里详细介绍。腾讯云人称良心云,其CDN服务给新手6个月的50G流量包,之后每个月仍然赠送10G流量包,对于个人网站完全是足够用了,支持HTTPS,节点数量较多,加速想过非常明显。
本篇文章主要是想分享一下腾讯云CDN的配置,重点是wordpress防盗链,缓存配置,回源配置。顺便说一下腾讯云CDN经常会造成wordpress后台564错误的原因。
基础配置同第二部分的腾讯云CDN配置,详细配置如下:
1.防盗链配置
本博客采用了白名单防盗链,开启了空referer保证浏览器直接访问的正确性。白名单除了本站自己域名外,还应该有搜索引擎的存在,保证搜索引擎的正常索引。
- *.baidu.com
- *.baiducontent.com
- *.bing.com
- *.google.com
- *.qhimg.com
- *.qq.com
- *.qzone.qq.com
- *.sina.com
- *.sinajs.cn
- *.so.com
- *.sogou.com
- *.sogoucdn.com
- *.soso.com
- *.toutiao.com
- *.weibo.com
- *.yidianzixun.com
- cn.bing.com
- img.t.sinajs.cn
- liuxiangling.com
- mail.qq.com
- mp.qq.com
- mp.toutiao.com
- mp.yidianzixun.com
- openmail.qq.com
- s.share.baidu.com
- service.weibo.com
- www.baidu.com
- www.chinaso.com
- www.google.com
- www.so.com
- www.sogou.com
- www.toutiao.com
- *.zhangxuhu.com
- zhangxuhu.com
请注意,将 *.zhangxuhu.com和zhangxuhu.com换成自己的域名。另外 *.zhangxuhu.com中的通配符并不能代表 zhangxuhu.com,包括HTTPS的泛域名证书也是这个道理。
如果有友情链接连接到本站,请将该网址加入上面白名单中。或者,请干脆对主站不开启防盗链,仅仅对静态资源站开启防盗链。
2.IP访问限频配置
注意:这个限制只是单个CDN节点的限制,并不是CDN的总限制。另外,该限制不能太低(如10),否则导致WP后台无法打开。
3.缓存配置(适用于WP主站)
请开启高级缓存过期设置。
类型 | 内容 | 刷新时间 |
---|---|---|
全部 | all | 0天 |
文件类型 | .woff2;.woff;.css;.js;.png;.ttf;.eot;.svg | 60天 |
文件类型 | .xml;.gz;.php | 0天 |
- 不缓存php文件可以防止造成许多奇怪的问题。
- 缓存css,js,png等文件是为了防止动静分离时有漏网之鱼,主要是WP后台的静态文件。
- .woff2;.otf;.ot;.svg;.ttf;.woff是wordpress主题的字体文件,也应该缓存。
- 也可以根据需要缓存html和首页。
4.回源配置及564错误解决
对wordpress启用腾讯云CDN会造成许多后台HTTP 564错误,上网搜索发现,好多网友说中间源配置,Range回源,回源跟随301会造成这个问题,经过我个人的体验和发工单请教腾讯云工程师,其实564错误和这个是没有关系的。
腾讯云工程师:564是由于源站响应时间高于cdn的默认超时时间10s导致的
因此,这三个选项和564错误还是没有关系的。那么564错误到底怎么解决呢?
从工程师的回复可以看到,即使不套腾讯云CDN,wordpress的后台响应也是很慢的,甚至可能打不开。不考虑了服务器性能过低的因素,建议排查插件,一些代码质量不好的插件会严重影响后台的加载速度。我曾经发生564错误就是因为某个插件的原因,登陆服务器后删除掉这个插件的文件夹就行了。
怎么排查是不是插件的因素呢?将/wp-contents/pulgins改名,如果可以打开后台说明是插件的问题,按个插件排查即可。如果不是插件的原因,那么就该排查服务器的负载了。不过我还是要说,凭什么腾讯云只等待10S,哈哈哈。
以上就是我本人对wordpress的加速的经验,里面可能有一些不对或者不通用的地方,还望大家批评指正。也欢迎大家有什么好的加速技巧共同分享。