WordPress优化丨动静分离和Redis数据库缓存

前言

现在想想当初选择wordpress完全是一次偶然的机会,三丰云免费空间里自带的wp预装打开了新世界的大门,原来也可以这样~ 于是乎我从一个小白开始,划着不太灵敏的桨出发了,wp插件种类多简单简单易用,最主要是遇到问题百度或谷歌一下就可以很好的解决~当然用的时间长了他的缺点也就暴露了出来,比如上一个heito?主题虽然自定义强但是实在太臃肿了,而且打开速度非常之慢!而且数据库优化差导致一核一G的小vps根本带不动wp,cpu动不动百分百每个月要花额外的钱来租服务器来跑博客。

前几天WP专用机要到期了,我却不想再花额外的钱来专供一个博客,期间真的有考虑过酷炫的hexo,简洁的ty等其他博客构架,但是由于更换构架会导致太多的死链影像收录这最后一块木头和无法进行部署的虚拟空间一样都是我放弃的理由,不如从头倒戈来过,把WP好好地优化敲打鼓捣一下,脑海中列出了以下清单:

  1. 动静分离
  2. Redis数据库缓存

一、Redis数据库缓存

我们都知道WordPress采用的是动态数据库查询方式。翻译成白话,就是当用户访问文章或页面时,都会向数据库发送1个查询命令,数据库根据命令查询之后返回查询结果(这里不存在任何缓存技术)。很明显,如果访问量巨大,就会频繁的查询数据库,这会减慢网站速度。如果服务器性能不高,瞬间网站就崩溃了。

所以我们需要一种缓存技术,来减少数据库查询次数。而数据库缓存技术就是其中之一。Redis技术是其中的佼佼者。Redis是key-value分布式存储系统。简单的说,就是根据关键词值进行查询,这在很大程度上弥补了Memcached的短板。通过Redis进行数据库缓存,查询速度会更快,并发数更多。

一、安装Redis 可以在宝塔PHP拓展里安装Redis拓展插件,也可以SSH安装并配置,这里推荐宝塔

二、WordPress网站后台安装插件并开启Redis支持

1、使用Redis Object Cache

我们需要手工修改一下/wp-content目录下的object-cache.php文件:

$parameters = array(
            'scheme' => 'tcp',
            'host' => '127.0.0.1',
            'port' => 6379
        );


搜索并安装激活Redis Object Cache插件,该插件安装了一个php文件,可以帮助WordPress与Redis进行通信。导航到设置→Redis,然后单击“Enable Object Cache”并确保状态显示“Connected”。

不过我尝试了好多次都没有成功,于是就换了第二个插件

W3 Total Cache

这个方法比较简单,在后台搜索W3 Total Cache这个插件并安装激活,然后在 Performance → General Settings → Object Cache里面开启对象缓存,缓存方式选择Redis。

您可以通过W3TC轻松测试Redis是否正常工作。

要通过W3TC进行测试,请导航到Performance→Object Cache。单击“测试”按钮。如果您看到测试传递了消息,则Redis缓存工作正常。如果您不确定Redis的工作原理,我们建议您将设置保留为默认值。

开启Redis数据库缓存后打开速度几乎快了一倍。

二、动静分离

动静分离之前也试过,不过由于云存储方面的路径没配置好而放弃了,而且那个插件也有问题待完善,今天首先攻打的Gayhub+Jsdelivr的方法,未果程序包太大了不给加速,而github raw域名被墙而放弃,继续用又拍云,加上对的插件,动静分离的比较成功。

这里使用的插件是又拍云Uss插件,如果你使用其他的存储方案,可以在插件商店里搜索对应的插件,原理是数据库将原来路径blog.yourweb.com/wp_content/uploads重写为新的对象存储的地址路径,再根据相应的api可以实现本地和存储端同步的上传,而读取时候只走对象存储的CDN来实现加入目的。

对象存储与文件托管有很多种,我大概写了个思路,请忽略我拙劣的作图能力

补充:OSS和COS国内节点是需要备案的 海外节点可以不用备案
1.首推Github+jsDelivr

文件包小于50M或者可以折腾多个Github仓库分包的极力推荐这个办法,JSD在国内是网宿在加速并且免费,利用JSD加速Github的镜像,具体可以看这篇文章

2.其次推又拍云

具有一个备案域名后可以申请加入又拍云联盟并且悬挂标志LOGO后会获得一个61元的代金券,CDN和对象存储都可以用,支持HTTS也就是每月10G流量+5G空间一年的量,可以弹性调节,这月用超了下个月少用点或者多充几块钱就可以,本博客在用的就是又拍云的CDN和对象存储。

3.阿里云和腾讯云主机推荐OSS和COS

如果你使用的腾讯云或者阿里云服务器建议尝试一下自家的对象存储,同地域流量走内网不计流量并且这两家时不时有优惠,其中COS新用户免费6个月50G流量,OSS不清楚估计也有大厂的数据和稳定性放心。

补充:OSS和COS国内节点是需要备案的 海外节点可以不用备案

4.七牛云

七牛也有10G的免费空间和免费上传,只是外网流量需要计费和备案,具体也没有研究,只是免费版不支持https要注意。

网站动静分离后既减轻了源站的压力,也加速了网站,wp的优化可谓路漫漫其修远兮,以后会在针对WP进行深度开发以及自定义数据库结构以发掘出WP的全部优势。

Cloudflare Pro使用心得

  云筏科技Cloudflare Pro输入邀请码 mjj19

原价$20/月的Pro套餐 现在一年只需40元/年

有需求的朋友点此看教程和开通

  前言

云筏是类似笨牛的一个Cloudflare partner,从云筏接入CF激活Cloudflare pro(Plesk)的功能(虽然说从CF官网看还是Free免费版),cloudflare Pro 与普通免费套餐区别如下:

  • 可以开启Polish
  • 可自定义错误页面(4xx 5xx 1xxx 3秒盾)
  • 页面规则数为30条(免费只有3条)
  • WAF权限
  • 图片Mirage(根据终端分配不同图片)
  • Speectrum免费5G流量

CF pro
CF pro

这个CF pro车实质上是Plesk的共享版本,云筏开一个Plesk,然后Plesk的domain都可以享受上面列的Pro功能,Cloudflare partner配合API就可以发车了;虽然说节点和免费版的都一样但是我觉得自定义WAF和页面规则就值得了,下面我分享一些其中部分功能的使用心得。

一、页面规则书写(Page-rules)

https://cdn.jsdelivr.net/gh/wangyaojiu/tuchuang@master/2020112811074860e6998e930dcb446e2eccad19bc6f68.PNG

常言道页面规则写好了,就等于网站成功了一半。免费版Cloudflare只有三条规则能写,拿WordPress为例,三条规则仅能做前后端的区分,更详细的规则就比难过了。

首先讲一下免费的Wordpress规则书写

第一条
*blog.wang19.com/wp-admin*后台不缓存
第二条
*blog.wang19.com/*preview=true*预览不缓存
第三条
*blog.wang19.com/*其余全缓存
*第四条(需pro以上)
blog.wang19.com/wp-login.php*登陆页面

规则解释:

首先上方规则中的“*”代表所有的意思,不管是字母数字或者是特殊符号都可以使用一个“*”来代替。熟悉正则表达式的同学对这个很好理解。

第一条含义:代表此条规则适用于所有*.wang19后面开头是wp-admin的URL地址,wp-admin后面的字符全部包括在此条规则内。wp-admin是wordpress博客的默认后台地址。

第二条含义:*.wang19后面URL中只要带有preview=true的字符,都适用于此条规则。preview=true是wordpress写文章点击预览时的预览URL地址。

第三条含义:*.wang19/后面所有的URL地址全部适用于此条规则。

上面三条规则里面我们前两条是要设置为不缓存,第三条我们设置为永远缓存。这样第一条的后台地址和预览地址我们看到的就是最新的内容,不会出现无法登陆或者无法预览文章的情况。

此时免费版的三条规则就该想到wp-login这个登陆地址怎么办了,我推荐Easy hide Login这个插件,需要的可以自己研究一下 。

附:此博客的缓存规则

二、Polish图片缓存

Polish对于类似我这种图片站或图片多的站是一种福音,可以选择无损有损压缩,有损压缩还可以选择WebP;如官网所示,通过优化域中托管的图像,缩短图像加载时间。(可选)可以将 WebP 图像编解码器与受支持的客户端一起使用,来实现更多性能优势。

  • WebP: 浏览器支持的情况下,会发送WebP格式的图片。JPEG有损,GIF和PNG无损。太大的JPEG文件会被转换成渐进显示的图片,也就是在加载过程中,图片会逐渐变得清晰。WebP转换不会影响URL,也就是说,虽然URL后缀是JPEG、PNG等,但是图片内容已经是WebP了。
  • Lossy: 有损压缩。除了进行Lossless的操作外,还会对JPEG进行压缩,可能会影响图片质量。
  • Lossless: 无损压缩。此选项不会影响图片质量。PNG、GIF文件,会被无损压缩。而JPEG文件仅会被删除标签
怎样确定Polish是否生效?

你可以查看文末图片的请求头,返回的请求头会包含以下三个字段:

cf-bgj: imgq:100
cf-cache-status: HIT
cf-polished: origSize=4279085, status=webp_bigger

  • cf-bgj 表示Polish已经生效,imgq参数表示图片质量,此处的100表示无损。
  • cf-cache-status 表示图片已被缓存,Polish可生效。
  • cf-polished 提供了原始图片大小和一个状态码。下面会对常见的状态码进行解释。
常见状态码

下面是cf-polished字段中,常见的状态码。如果cf-polished字段没有出现在请求头,可以尝试purge这个图片。

  • input_too_large 图片太大或者太复杂了。推荐对小于1000px和10MB的png、jpeg图片启用此项功能。
  • not_compressed or not_needed 源图片已经优化得足够好,无需再进行操作了。
  • webp_bigger 没有转换成WebP,因为源文件已经优化得足够好,或者质量不佳,转换成WebP的话,会变得更大。Because the WebP version doesn’t exist, the status is set on the JPEG/PNG version of the response.(这句没看懂)
  • cannot_optimize 或者 internal_error 源图片损坏,请重新上传到源服务器。
  • format_not_supported 不支持的格式(比如BMP,TIFF)。
  • vary_header_present 源服务器发送的回复头Vary不是accept-encoding,而是其他值。如果是在源服务器进行了WebP转换,请不要这么做,让CloudFlare来转换。

、Spectrum

Pro版本的Speectrum支持MCSSH的DDOS防护以及加速,并且每月5G的免费流量,超出额度1$/G,看一下官方说明文档

>>Cloudflare Spectrum Docs

Cloudflare Spectrum 是一种反向代理产品,可将 Cloudflare 的优势扩展到所有 TCP/UDP 应用程序

  • 通过 Cloudflare 代理任何 TCP/UDP 流量
  • 允许或拒绝 IP 地址
  • 集成性能优势
  • 灵活和全面 TLS
  • 实时应用程序相关分析
  • 允许 TLS 直通流量
  • 通过仪表板用户界面或 API 轻松设置
  • 多服务器第 4 层流量负载均衡
  • 支持日志共享到公共云存储桶

四、自定义页面(custom-pages)

规则(custom-pages)中可以对对 Cloudflare 向您的访问者显示的错误页面和质询页面进行个性化设置。

比如我自定义的五秒盾,你可以在Github上面的找到好多自定义的页面

五、开通Pro (Plesk plus with WAF)

云筏科技Cloudflare Pro输入邀请码 mjj19
原价$20/月的Pro套餐 现在一年只需40元/年

1、打开云筏官网,注册登陆,在左侧栏找到Cloudflare

2、点击添加 新增付费域名

(1)填写你要添加的域名 如 wang19.com (注意填写一级域名而不是带3w的)

(2)填写我的邀请码 mjj19 可以优惠十元

3、接入域名 配置CNAME

罗马尼亚异域风情免费VPS

某天晚上在电报群闲逛的时候看到群友分享出VIRTONO的10$优惠码,抱着试一试的态度想要白嫖一台玩玩,注册第一个账号的时候不知是太贪心还是IP不对的原因被系统BAN掉了,注册了第二个,发邮件说付款0$成功但是号死活登不上去,就不再尝试了,没想到三天之后virtoNo发来邮件说开机成功了哈哈,同为virmach的孪生兄弟virtono的官网比virmach好的不是一点半点。

virtodo

 

15GB SSD
1 Core Processor
512MB Memory
1Gbps Connection
1 IPv4 Address
1 IPv6 Address
1TB Bandwidth

2.95$/mon

以上是VPS的配置,与Virmach1.5刀的VPS相比多的是G口带宽(虽然说不能跑满)

有罗马尼亚、美国达拉斯、伦敦机房可选,由于我一时心急白嫖忘记选机房所以默认是罗马蒂亚机房

机器配置图

 

配置

测速和硬盘读写

speed

上传下载速度完全看心情,不上CDN或中转根本没法用

路线:

(连直连都不算,绕来绕去延迟都在300-400ms左右)

1

2

3

4

总结一下:

优点

免费
G口

缺点

路线拉跨,建站不可能

内存小

续费原价价格30一月,若不是免费谁会用这个

Virmach KVP VPS 一月仅需1.3$

之前就一直想搞一台小机专门用来做梯子自用上传备份大量视频素材,HK主力机生产环境再去搞这些不安全,机场一个月能用的流量只有100G,考虑了几天昨天终于买了一台传说中的价格屠夫“ virmach”用作月抛机,有考虑过PR,CC,RN,和VIRMACH,纠结好久最后在RN和VIR直接选择,RN价格确实可以,一年只需9刀,但是有跑路的嫌疑,最后选择了virmach

 

不得不吐槽一下,Virmach的官网真是垃圾,连接慢到死,还动不动被攻击,Cloudflare的5秒盾和5xx状态,好不容易支付成功了VPS的控制面板简陋的令我心寒,在写这篇文章的时候想进去截个控制面板的图,结果都进不去官网。。。

 

五秒盾

吐槽结束,控制面板里有三十次重装系统的机会,用完之后就得联系客服了,可以换IP,一次2刀还是多少来着,可以换机房,一次5刀,由于我买的时候僧圣何塞机场售罄了,选择其次的洛杉矶机房。

KVM架构,351M内存(默认256,推荐加0.25$升级351),100M共享带宽,10G SSD,1core CPU

机器

不得不说,SSD的读写速度离石头盘不远了,读写110M/S左右,和上一篇的洛杉矶高仿的1G/s差远了,100M的共享带宽是吸引我的主要原因,安装V2-UI面板和BBRPLUS测试下youtube

PC端白天2w左右4K视频流畅,晚高峰1w左右  手机能看1440P

 

U2

*补充,现在是21.57,令人惊喜的是晚高峰比平常竟然跑的更快,3W左右

 

解锁部分Netflix,部分还是无法观看,观看4K不卡顿,Fast测速平均21M

 

 

nf

 

 

上面是实际使用的体验,VMESS协议直连,100M的带宽如果用大陆NAT中转我感觉效果可能更好一些,我觉得一个VPS好不好用,实际体验比单纯的PING值和三网路线重要得多,当然越贵的机器账面数据好看的多,实际体验也好得多,1.3$一月的扶墙小鸡不做站能看4K视频很满足了。

 

从PING值来看,电信路线相对最好,联通和移动不相上下200-300Ms,教育网不错 ,可能移动差点,美国西海岸三网直连,非CN2 非GIA

PING

ping

四网路线:

电信:

ccn

联通:

ccn

移动:

ccm

教育网:

edn

 

总结一下:

优点

  • 价格低廉 1.3$/mouth
  • 100M带宽  youtube 4k 上传速度还不错
  • KVM架构 能换IP和机房(收费)

缺点

  • 官网实在太太垃圾 控制面板简陋
  • 谷歌验证码 未解锁奈飞和谷歌学术
  • 内存只有256M

洛杉矶超高防用来扶墙?

     前言:

最近整了一台洛杉矶高防弹性服务器的三天试用,配置为1G 1H 20M 500G流量的弹性小鸡,有趣的是商家标明承诺七天内打死全额退款,那么今天来胡搞一下这个西海岸的高防小?

首先是机器的相关信息,KVM构架,E3-12XX V2,硬盘读写速度针不戳,估计高防机的原因吧,石头盘的话早就废了。

 

配置

 

 三网路线:

电信:

电信

 

联通:

联通

移动:

移动

 

电信有时候走59.43,大多数直连,联通直连,移动绕英国荷兰到洛杉矶

 

绕路

 

ping一下

 

 

ping

平均200ms左右,正常Ping值,我这里移动Ping值160左右,美国西海岸200内可以了。

   解锁Netflix奈飞

 nf

Fast测速

fast

谷歌学术也能用

google

  晚高峰油管只能跑一万多点 ( 测试时间21:16)

【测试机只有20M带宽】

youtube

最低配的1H 1G 20G 15M 500G流量 ¥31.00元/ 月付

双十一全场七折优惠 优惠码  uBAhug3L

   购买链接:洛杉矶超高防弹性云服务器

继续阅读洛杉矶超高防用来扶墙?