经验分享:我是如何对wordpress博客加速的?/解决腾讯云564错误

本文最后更新于2019/03/05,部分内容可以能已经失效。

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配置文件中加入一条

  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主站)

请开启高级缓存过期设置。

类型内容刷新时间
全部all0天
文件类型.woff2;.woff;.css;.js;.png;.ttf;.eot;.svg60天
文件类型.xml;.gz;.php0天
  • 不缓存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的加速的经验,里面可能有一些不对或者不通用的地方,还望大家批评指正。也欢迎大家有什么好的加速技巧共同分享。

为您推荐

发表评论

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

5条评论

  1. 你好。我在搜索腾讯云CDN如何配置时看到了你的博客。我想要做到的效果是隐藏IP(只显示CDN的IP,就像你的这样,这是我最关键的需求)的同时实现加速。不过我可能对CNAME没有足够的认识,始终达不到这效果。也发现有好多人都解决不了这个问题。希望你能帮个忙写个详细的教程,重点讲一下每一步骤的配置,如CNAME如何解析(哪个域名解析到哪个域名?),主机域名等。提前谢谢啦。

    1. 你好,比如您的博客域名时www.nidewenzhang.com,那么在配置腾讯云CDN时,应该设置www.nidewenzhang.com的解析记录(类型:CNAME,内容:腾讯云CDN提供的加速地址)。而您主机所在IP应该在腾讯云CDN的回源设置中。不要在www.nidewenzhang.com中设置A记录到您真实的主机IP。不知道我是否表达清楚,或者我是否理解了您的问题?

      1. 嗯,你get到我的意思了,我纠结的就是回源设置中到底该填写哪类信息,看来是要填IP地址。我待会儿试试,不行的话再请教你,谢谢。

  2. 564问题搜了好久,然后发工单也没得到正确的解决方案,然后从你这看到那句“腾讯云工程师:564是由于源站响应时间高于cdn的默认超时时间10s导致的”豁然开朗。