网站建设

张戈博客使用CloudFlare CDN加速的经验技巧分享

Jager · 6月2日 · 2019年 · · 3465次已读

我博客之前的文章提到了因更换了个性域名 zhang.ge 导致无法备案,因此服务器也不得不迁移到国外,这里也顺便分享一下,目前博客使用AWS的lightsail,坐标东京,配置如图:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图1:我选择的是套餐三,另外挂了一个20GB云数据盘

大概10刀多一点每月,换算软妹币80左右,比国内的绝大部分香港或境外同等配置云服务器划算。如果选择前2个套餐会更便宜。

张戈博客使用CloudFlare CDN加速的经验技巧分享
图2:近几个月的费用报告

不过,真正用过国外服务器的朋友都知道,受『功夫王』的影响,国外服务器一到傍晚就会抽搐不已。于是考虑套一层CDN来缓解下,而且也可能帮忙扛一扛恶意攻击什么的。

CloudFlare(后文简称CF)是什么,怎么设置我这里就不赘述了,大家可以网上搜下CF的详细使用教程,有非常多的网友、博主分享了图文并茂的教程。下面主要是记录、分享一下张戈博客在使用CF中发现的一些经验或技巧,希望给在用或将要用CF的同学提供一些参考。

一、CNAME接入方式

了解过CF的同学可能知道了,CF免费套餐只能通过NS方式接入。这个方式用起来不够灵活、生效很慢,而且最重要的问题是没法在解析的时候手工解析到CF节点IP地址。

要实现CF的CNAME接入方式也很简单,这里使用第三方的CF管理平台即可,比如张戈博客使用的是:BNXB 。这类平台通过CF的API来操作域名,所以他们把CF的所有功能选项都本地化、中文化了,极大的降低了国内用户的使用门槛!当然,最吸引我的还是可以使用CNAME接入方式。

张戈博客使用CloudFlare CDN加速的经验技巧分享
图3:BNXB设置

接入很简单,注册平台账号并参考提示绑定CF的API账号,即可在平台进行接入操作。这里可以直接选择CNAME接入方式:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图4:CNAME接入

如果觉得描述理解费劲,不知道怎么填写,其实也可以先选择DNS接入方式,然后在平台可以再次转换为CNAME方式。这个平台可以随时在CNAME和DNS接入方式之间互相转换:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图5:接入方式转换

接入完成后,我们可以参考网络上前人分享的一些经验,优化一下配置(都是中文的,这里我就不一一介绍了),平台会给出一个可用的CNAME记录:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图6:解析记录界面,CNAME记录

这时候,我们就可以在原来的域名管理(比如dnspod、万网等)那里,将之前的@或WWW记录解析到这个cname,就完成了CF的接入了。

二、指定节点解析

如上文图6最后所示,接入CF之后,CF会给域名分配一个入口IP,一般是美西洛杉矶那边的。这个IP其实是采用的AnyCast技术,当用户访问到时候,会就近分配一个真实的节点IP,以加快访问速度。所以,通过ping工具去探测出来的IP都只是AnyCast入口IP,并不能展示真实的节点IP地址是多少。

不过,要查看真实节点IP的方法也很简单,CF每一个节点都有一个trace接口,访问方式为:http://{节点IP/域名}/cdn-cgi/trace。比如要查看张戈博客的真实节点地址,则访问 https://zhang.ge/cdn-cgi/trace

通过实测发现,目前国内用户访问默认还是会走美西节点,只有移动和教育网会走香港节点。因此国内用CF的效果仍然不够乐观。如此一来,就会有同学奇思妙想了,既然能找到真实节点,那是不是我可以固定解析到一些速度快的节点呢?比如香港节点。答案是肯定的!!

有了上面CNAME接入的前提条件,我们就可以在域名解析那里任意解析到节点IP了。反之,使用NS方式接入就不能这么任性了。

CF的具体节点IP这里就不公布了,感兴趣的自己去谷歌、百度搜下看看。

这样一来,电信和联通2个大户,本来是走美西慢出翔,现在就可以走两个相对高速的节点了,速度得到极大提升!而默认线路使用CF默认分配的AnyCast入口IP,一是移动运营商用户可以走香港线路,二是为了兜底。说到兜底,这里不得不再分享一个dnspod的使用技巧——D监控:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图8:D监控自动切换解析

如图所示,dnspod的D监控功能,可以探测站点是否可用,若不可用可以自动切换到可用的IP。所以在图7,我给电信和联通都设置了2个IP(免费套餐最多2个)。也就是说,当D监控发现手工指定的CF节点宕机,则可以自动切换到另外2个IP(包括默认的AnyCast IP),也就又多了一层保障:

张戈博客使用CloudFlare CDN加速的经验技巧分享

三、强制缓存配置

当我接入CF之后,我发现虽然我在cache等配置里面设置了缓存,实际上页面并没有缓存到CDN节点。最终,通过官网的帮助文档,发现CF默认并不会缓存html页面(文档地址),而需要设置自定义的Page Rules,这个和百度云加速那个自定义规则其实一模一样!所以说,百度云加速其实就是『借鉴』CF来设计的。

既然一模一样,因此可以参考我之前分享的百度云加速自定义规则设置来设置CF的Page Rules了,如图:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图10:page rules设置

还是和百度云加速一样(或者说百度云加速和CF一样),免费套餐只能设置3条规则,因此不愿意花钱的我们也就只能如图设置了:除了后台和评论分页不缓存,其他一律缓存。如图所示,其中还有个最关键的地方,Edge Cache TTL这个选项必须要设置一下,否则依然不会缓存的哦!

虽然有些粗放,但是对于个人博客是可以接受的,除非有什么特殊页面也要求不缓存时,可能无法满足。当然,如果你确实需要更多规则,也可以花5刀/月额外购买5条:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图11:付费购买Page Rules条目

另外,我从CF帮助文档看到,Page Rules其实是可以根据cookies来配置页面规则的,当时我没找到,应该是收费版本才有。就是不知道5刀购买的5条规则是否可用通过cookie实现更加灵活点配置。描述如下:

How do you specify cookie names for Bypass Cache Cookie or Cache on Cookie?
Note that Bypass Cache on Cookie is available only on Business and Enterprise plans & Cache on Cookie is Enterprise only.
You can specify multiple cookie names by using the OR “|” operator. For example, to match cookie1cookie2, or cookie3, you would write: cookie1|cookie2|cookie3. You can also use the wildcard “.*” operator, i.e. cookie1.*.

如果可以通过cookie来配置,那就非常强大了,比如官网给出的WordPress专用配置

张戈博客使用CloudFlare CDN加速的经验技巧分享
图12:CF官方分享的WordPress专用html缓存页面配置

四、WordPress插件

使用CDN之后,很多朋友可能会被缓存困扰,比如内容更新,前台却因CDN缓存死活看不到最新内容,可谓乐也缓存、烦也缓存。因此,每次我使用一个新的CDN,都会写一些配套的缓存自动清理代码(我没用过的,自然也不会花时间去研究的啦~~),比如之前分享过:

这次,也不例外。而且CF明显有更加成熟的API接口,正打算开撸的时候,我发现了新大陆!其实CF有专用的WordPress插件,名称就叫Cloudflare。我们只需要在后台插件界面搜索安装即可:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图13:搜索并安装CloudFlare插件

安装后,在插件设置界面登陆CF账号,就可以得到一个简易版的CF控制后台了:

张戈博客使用CloudFlare CDN加速的经验技巧分享
图14:Cloudflare插件设置
张戈博客使用CloudFlare CDN加速的经验技巧分享
图15:Cloudflare后台数据统计

当然,这些功能我们在官方或者第三方平台都能配置,只能说是锦上添花。而我们最关注的功能其实是再更新内容时能自动删除CDN缓存,插件是否支持?答案是肯定的!

张戈博客使用CloudFlare CDN加速的经验技巧分享
图16:自动更新缓存设置

如此一来,我就不用撸代码,你们也就不用折腾代码啦!真的爽歪歪!

五、敬请期待…

暂时就想到这么多,后续如果发现更多实用的CF配置技巧,我再继续更新到本文,敬请收藏关注!

42 条回应
  1. 奶爸de笔记 2019-6-2 · 14:27

    CF的有个问题,国内部分地区访问不到,比如你说的澳门哪个ip,江苏江西都不能访问。站长工具测试的。

    • Jager 2019-6-2 · 14:43

      那个测试不一定准确,确实有访问不到的。也没办法,谁让没法备案呢。用国外的IP基本都有这个问题。

      • 奶爸de笔记 2019-6-2 · 14:44

        不准确不过也确实有套了cf打不开的情况,因为我访问有些人的博客就会出现加载不了要挂飞机才能看的情况。

        • Jager 2019-6-2 · 15:34

          那真的没有办法了,国外主机都有这种问题。希望郭嘉能放开国别玉米备案吧。

  2. 奶爸de笔记 2019-6-2 · 14:27

    另外你是换了新主题吧,挺好看的。

  3. repostone 2019-6-2 · 16:58

    非建站人员路过。

    • 老火车 2019-6-3 · 13:48

      到处发垃圾评论,还留假邮箱,有意思吗?

  4. 傲风 2019-6-3 · 12:05

    这是换模板了??

  5. 龙笑天 2019-6-3 · 12:39

    速度简直快多了 CF这个cookie功能不错 国内CDN貌似没见过这个~ PS:想备案却无门 确实很….

  6. 自然 2019-6-3 · 13:00

    博主可以说说缓存html,和不缓存评论这个规则吗?

    • Jager 2019-6-3 · 13:02

      主要通过评论路径排除缓存,用户从邮件提醒点击过来的都是带评论路径的,所以会显示最新内容。另外,CF插件也实现了评论更新的时候清理缓存,所以也不担心评论被缓存。

  7. maqingxi 2019-6-3 · 13:34

    用过国内主机后再用国外主机,速度真是有点接受不了,为了这个域名你也是够拼的了。

    • Jager 2019-6-3 · 14:06

      哈哈,个人博客就也拼一下个性了。鱼和熊掌难以兼得~~

      • 刘晨晨 2019-6-9 · 0:45

        确实,想得到个性的域名,访问速度和稳定性只能从其它地方下手了,国内确实很多域名不能备案和被功夫王影响了

  8. 速度不错 2019-6-3 · 14:42

    支持下,公布ip估计很快就被滥用了就被封吧。希望出个自己扫ip自用的教程,防止滥用,备注cloudflare 国内友好速度快的

  9. 明月登楼的博客 2019-6-4 · 11:52

    新版主题好酷的样子!

  10. 自然 2019-6-4 · 21:45

    奇怪,我通过http://{节点IP/域名}/cdn-cgi/trace这个方法获得的IP,都是本地区“维盟(WayOS)智能路由管理系统”的ip,直接访问是web界面。奈何自己不会破解啊

  11. 程平博客 2019-6-5 · 9:12

    几天不来都换新主题了,这个主题挺不错的,这几天有点严厉!很多都挂了!

  12. 赛因 2019-6-6 · 10:30

    听说CF有点慢,为什么你的站这么快?

  13. 小娜 2019-6-6 · 18:57

    跟着张哥总能学到一些东西,没想到一个cf都能玩出花里胡哨,这下收集的那些不能备案的域名可以拿出来晒晒了!

  14. 叠纸盒 2019-6-10 · 12:47

    张知更鸟哥原来是用知更鸟的主题,应该可以免费更换3次域名授权,为啥换了呢!

  15. 自由视界 2019-6-10 · 16:51

    用cf,跑的更慢,好多地区出现不能访问,自测节点又不会。。。。公布的马上就会被封掉

  16. 橙色阳光 2019-6-12 · 11:21

    阿里的全站加速,不是有单独的境外选项,无需备案么;

  17. 小人物 2019-6-13 · 13:43

    戈少,能否隐藏下IP,H国Ip一直在用,不想被滥用。。

    • Jager 2019-6-14 · 15:54

      已屏蔽

  18. 建群 2019-6-13 · 21:46

    niRvana轻拟物主题 安装不上 你用着主题你确实不错 不知道为什么我用begin打开速度 很慢

  19. 小不点 2019-6-14 · 10:40

    再次恳请屏蔽H国IP,这个IP我用了好久,实在不想您一公布就被操烂!!

    • Jager 2019-6-14 · 11:18

      理解你的意思,文章已做屏蔽。但是,有心人只需要ping下域名就知道了,这个也没什么隐藏的。谷歌上一搜都是这个ip。

      • 小不点 2019-6-14 · 15:55

        点赞。

  20. 红人go 2019-6-18 · 18:03

    为了达到不断钻研挺好的,右边的文章目录没有四

  21. 天鸡部落 2019-6-29 · 20:38

    曾经异想天开的想使用CloudFlare可以缓存网站的图片和视频,这样小水管站点也能做图片站视频站了,结果使用后发现不是那么回事。

  22. 天音 2019-7-4 · 22:18

    求说说cf怎么指定解析节点ip

    • 天音 2019-7-4 · 22:20

      感谢,我没认真看,抱歉,

  23. 七夕夫人 2019-7-19 · 12:49

    我想要月光宝盒,看看敬请期待的内容

  24. 黑豆 2019-7-24 · 18:05

    才知道原来还有免费的cdn

  25. 老俍 2019-7-26 · 17:02

    虽然服务在国外,感觉速度还是挺快的,CDN的作用不小。

  26. WordPress建站吧 2019-7-27 · 19:34

    国内的cdn还是挺好的,价格也不贵的。。

  27. 小妮子 2019-7-31 · 11:10

    请问大哥,用了这个加速以后评论不返回怎么设置啊?

  28. Liang.Ke 2019-8-7 · 0:14

    张戈大佬几时发一下Typecho的规则好吗?

  29. 心灵博客 2019-8-11 · 9:51

    这样指定节点解析的话,会导致REMOTE_ADDR、HTTP_X_FORWARDED_FOR获取的客户端ip都是错误的。

  30. 大神啊 2019-8-12 · 3:31

    最近在学习wordpress,买了国外服务器,正发愁,发现博主网站速度好快,好多技术文章,感谢分享这么优秀的技术文,供我们这些小白慢慢学习

  31. 何先生 2019-8-12 · 4:13

    请问下博主,使用设置方法后别人评论后,会缓存用户的评论信息,这样邮箱这些都会暴露了,翻看之前的wp super cache文章有讲到,但是那些代码现在无从应用,看博主的评论没有这个问题,想请教下方法,感谢