充分使用Cloudflare(1)

2020-06-22 00:00:00 缓存 请求 配置 网站 是因为

相信你已经听说,使用CDN能加速网站。如果你使用WordPress,并且服务器在国外,你对网站速度的提升一定更加期待。你准备使用CDN加速你的WordPress网站,却发现国内的CDN都需要网站备案,而由于种种原因,你暂时不愿备案。不久,你发现了Cloudflare,你欣喜地把你的网站添加到Cloudflare,然后满怀期待地再次打开网站,却失望地发现,你的网站好像更慢了!

怎么回事?这是什么破CDN,还号称全球快?!!

先别急着责怪Cloudflare——这家公司的CDN服务,确实是大陆以外免费CDN中快的了,其速度甚至超过了一些付费CDN。更好的是,Cloudflare不按流量收费,计费方式只有套餐和网站数量。

但为什么用了Cloudflare,你的WordPress网站会更慢呢?

这里有一张草图,展示了使用CDN后访客访问网站的过程。当然,我相信网上还有很多比这好得多的图,但我们暂时看这张就够了。

你的客户先经过过程①连接到CDN的服务器,如果CDN已经有客户所需的缓存,那么这次访问就直接到过程④,你的客户收到CDN返回的缓存内容。当然,我们都知道WordPress的大部分内容是动态的,这种情况下,CDN会再经过过程②向你的源站请求数据,通过过程③从源站取得返回数据,也就是说相比已缓存的内容多了两个过程。

本来客户与Cloudflare的数据传输就比较耗时(因为大多数情况下Cloudflare对来自大陆的请求只使用美国服务器处理),而Cloudflare与源站的数据传输也会需要一定时间(WordPress本来就比较慢),所以会造成使用Cloudflare后网站反而更慢的问题。

简单回顾一下,使用美国服务器跑WordPress,慢的原因主要有两个:一是大陆与美国之间的数据传输本来就比较耗时,二是WordPress对请求的处理需要一定时间。

好了,现在你已经清楚CDN是怎么工作的,你也明白慢是因为什么了。接下来我们就可以开始“对症下药”了。

你可能已经有这种想法了:让CDN直接缓存你的WordPress网站。这样不仅可以省掉Cloudflare与源站数据传输的时间,还可以减少WordPress处理数据的时间,而且由于到源站的请求少了,你服务器的压力也可以降低。真是一举多得。

但是怎么实现呢?你可能会看到这种说法,对WordPress进行伪静态处理,把页面改成以html结尾。但事实是,伪静态并不能帮助你“欺骗”Cloudflare进行缓存。况且,Cloudflare本来就不会对html文件缓存。

我所采用的方法是这样的:利用Cloudflare的Page Rules强制缓存页面。

具体操作是,在Cloudflare管理面板中,切换到Page Rules,点击Create Page Rules添加。下面是我的配置。

也许你一眼就能看懂我这些配置是在干什么,但我还是想说明一下。

条配置,是把所有直接访问raaynk.com的请求通过301转到raaynk.com
第二条配置,是把所有以raaynk.com/wp-admin开头的请求,标记为不缓存,也就是回源;
第三条配置,是把所有前两条配置以外的所有请求,标记为强制缓存,缓存时间为一个月。

raaynk.com通过301跳转到raaynk.com,是因为我比较懒,不想把跳转写到Web Server的配置中;
不缓存wp-admin开头的请求,是因为这是WordPress的后台,如果缓存会出大问题;
后强制缓存,不就是我们一直想干的吗?把它放在后,是因为Page Rules是有权重先后的。

前面的配置权重高于后面的配置。也就是如果前面的配置与后面的配置有冲突,则以前面的配置为准。

免费版的Cloudflare目前只能添加3条Page Rules,但就我们强制缓存的需求来说,足够了。

当然了,你可能会想,这么多内容都缓存到Cloudflare,那岂不是要用Cloudflare的很多空间和流量吗?哈哈,确实是这样的,但Cloudflare表示不会因为用户使用了更多的空间和流量而向用户收取更多费用。现在,是不是发自内心地想要大赞Cloudflare?

作者:Raaynk
链接:raaynk.com/archives/008

相关文章