国内网站使用Cloudflare CDN的速度优化方案
在大家开始阅读这篇文章之前,边肖先陈述一下自己的观点:在不必要的情况下,国内站点尽量不使用Cloudflare的CDN服务。除非你的WordPress网站使用的服务器不在国内,国内有很多CDN服务可以满足你的网站加速需求,比如阿里云、腾讯云、七牛云、UPYUN等服务商提供的CDN。
但是,如果您必须使用Cloudflare的CDN,请查看sleele的这篇教程。思路清晰易懂。尽情享受吧!
序
最近又开始优化博客的访问速度。在上次优化的基础上,我又改进了一次。这次用的是之前放弃的cloudflare cdn加速方案,现在有了新的思路和新的工具。
Cloudflare的cdn节点都在海外,国内的访问速度其实并不理想。如果你的vps线路质量不错,使用cloudflare cdn实际上会变慢。这是我之前的想法,但是自从cloudflare推出了cloudflare合作伙伴计划,你就可以通过合作伙伴免费使用cname解析,所以你可以用一些花哨的招数来实现定制cdn节点。
dns解析
本来想按照逻辑顺序写,但是考虑到实际操作是按照工具的顺序进行的,还是从dns解析开始吧!
以前想用cloudflare的免费cdn,就得用cloudflare的dns解析。现在,通过合作伙伴计划,我们可以免费使用cname resolution。这次我们选择的是dnspod提供的dns解析,它也提供D监控服务。d监控可以监控网站线路,根据网络情况自动切换节点。
先说什么是D监控。
什么是D监控?
D监控是指:当你的一台服务器宕机时,系统会自动将你切换到可用的服务器,宕机的服务器恢复后会自动切换回原来的ip(注意:D监控默认不开启,需要手动开启D监控)
检测原理:所有监控点都会向目标服务器发起一次,(此处需要注意的是,错误返回如403仅提示警告,无ip切换,错误返回500以上提示停机切换)
要使用dnspod dns解析,必须先注册dnspod,并将域名挂在上面。我相信任何有能力建网站的人都可以运营,就不赘述了。
域名在dnspod dns解析后,暂时不要设置D监控。现在你可以去cname了。
cloudflare合作伙伴
首先注册您的cloudflare帐户(http://cloudflare.com/),然后登录cloudflare partner。
我使用的是https://cdn.bnxb.com/,奔牛网提供的cloudflare合作伙伴服务
登录牛奔的cloudflare合作伙伴服务。然后选择添加域名以通过cname访问它。
提交后会给出cname地址,cname地址会填入dnspod的dns解析中。
过一段时间就会生效。ping网站以查看您是否已转到cloudflare cdn。如果此时你已经上了cloudflare cdn,ping网站时会出现cname地址。
精彩来了。
cname接入cloudflare cdn最大的好处就是可以自定义cdn节点,这样就可以选择国内最快的接入cloudflare cdn节点,从而加速接入,并且在D监控的加持下,防止网站因线路中断。
目前很多cloudflare提供的免费节点都烂了,需要自己测试。
在这里,我分享一些互联网上提供的ip段。选择ip段后,修改ip地址,填入dnspod中,如172.64.32.56,根据运营商填写。每个操作员填写两个节点,默认为海外:
172.64.32.1/24 (推荐移动,走香港)104.28.14.0/24 (推荐移动,走新加坡)104.23.240.0-104.23.243.254 (推荐联通、移动,线路未知)108.162.236.1/24 (推荐联通,走美国)104.20.157.0/24 (推荐联通,走日本)104.16.160.1/24 (推荐电信,走洛杉矶)172.64.0.0/24 (推荐电信,走旧金山)172.64.32.* (走欧洲) 108.162.236.1/24 联通 走美国172.64.32.1/24 移动 走香港104.16.160.1/24 电信 走美国洛杉矶172.64.0.0/24 电信 美国旧金山104.20.157.0/24 联通 走日本104.28.14.0/24 移动 走新加坡 104.18.62.1/24 香港hkix.net104.16.35.1/24 香港hkix.net104.16.36.1/24 香港hkix.net104.18.35.1/24 香港hkix.net104.18.36.1/24 香港hkix.net104.16.54.1/24 香港104.16.55.1/24 香港104.18.128.1/24 香港104.18.129.1/24 香港104.18.130.1/24 香港104.18.131.1/24 香港104.18.132.1/24 香港104.19.195.1/24 香港104.19.196.1/24 香港104.19.197.1/24 香港104.19.198.1/24 香港104.19.199.1/24 香港#适合电信的节点104.23.240.*#走欧洲各国出口 英国德国荷兰等 延迟比美国高一些 适合源站在欧洲的网站172.64.32.*#虽然去程走新加坡,但是回程线路的绕路的,实际效果不好,不推荐104.16.160.*#圣何塞的线路,比洛杉矶要快一点,推荐108.162.236.*#亚特兰大线路,延迟稳定,但是延迟较高#适合移动的节点162.158.133.* #走的丹麦,这一段ip只有部分能用,可以自己试一下,绕美国198.41.214.*198.41.212.*198.41.208.*198.41.209.*172.64.32.*141.101.115.*#移动走香港的IP段有很多,以上并不是全部。CF移动走香港的分直连和走ntt的效果都挺不错的,不过部分地区晚上还是会丢包。172.64.0. *#这是走圣何塞的,一般用香港的就行172.64.16.* #欧洲线路.绕#1.0.0.1效果较好电信部分大多数省直接使用1.0.0.0即可,延迟低,丢包少,# 移动部分#新加坡104.18.48.0-104.18.63.255104.24.112.0-104.24.127.255104.27.128.0-104.27.143.255104.28.0.0-104.28.15.255# 移动部分#圣何塞 104.28.16.0-31.255104.27.144.0-243.254104.23.240.0-243.254#香港cloudflare1-100g.hkix.net1.0.0.0-2541.1.1.0-254#香港直连104.16.0.0-79.255104.16.96.0-175.254104.16.192.0-207.255
还有奇招。
如果不想测试这么多节点,或者担心节点会死,可以将除默认值以外的所有记录值都写成1.0.0.1。cloudflare会自己判断,解析后所有dns记录都会转移到1.0.0.1,看起来很美:
开放式监控
单击下图中标记的图标,检查所有节点;
检查节点情况。目前,自由节点的延迟有高有低。只要操作员线对应的节点不是红色的,就没事。
之后如果对节点不满意,只需在dnspod中更换节点即可,见效快,并且可以在D监控中及时查看新节点的情况。
cloudflare页面规则
Cloudflare默认不缓存html文件,所以为了将尽可能多的数据放入cloudflare节点,我们需要设置缓存内容。
这是cloudflare官方页面规则的解释。建议你看看。懒得看也没关系。您可以遵循我的设置:
立正!有顺序。
sleele.com/wp-admin* sleele.com/*preview=true* sleele.com/*
Cloudflare缓存需要时间,所以最好把Edge缓存的TTL设置的长一点,不然还没缓存到cdn就过期了。在我设置7天之后,背景和预览文章将不会被缓存。
这里再插一句,因为免费账号只有3条规则,对于WordPress来说还不够。为了保存规则,需要修改WordPress登录地址,改为WP-admin xxxx;;
安装重命名wp-login.php插件,并将登录地址改为wp-adminxxxx。
测试缓存是否成功。
这个可能需要一段时间才能看到效果,但是你去不去cdn节点到时候就能看出来。
关闭代理软件,打开Chrome开发者模式,网络选项卡,禁用缓存禁用浏览器缓存,选择自己的网站URL和Headers选项卡,检查远程地址是否是之前在dns解析中设置的地址。
Cf-cache-status:命中就是命中缓存。检查计时标签和TTFB时间。时间越短越好。
CDN后来宾IP地址不正确的解决方案
使用cloudflare cdn后,访客ip和留言ip都会变成cloudflare cdn的ip,解决方案也很简单。cloudflare官方给出了解决方案。
Cloudflare在X-Forwarded-For标头和CF-Connecting-IP标头中包含访问者的IP地址。
修改Nginx配置文件,在http内容中添加以下内容,添加cloudflare的ip段:
location / { set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/12; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 199.27.128.0/21; set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; # use any of the following two real_ip_header CF-Connecting-IP; #real_ip_header X-Forwarded-For; }# 加载配置nginx -s reload
WordPress再次加速
WordPress是网页的动态生成。为了进一步提高加载速度,可以使用WP超级缓存生成静态页面。同时,gzip压缩选项被打开。Cache Everything可以将gzip的压缩html缓存到cdn中,提高加载速度。另一个自动优化插件也提供了优秀的WordPress优化支持。
另外,建议安装官方插件cloudflare。
可以手动和自动清除缓存,查看数据分析,非常有用。
转速试验
首先,这些速度测试的分数只能作为参考,实际意义不大,尤其是谷歌测试。
Boce国家速度测试
谷歌页面速度洞察
Pingdom网站速度测试
网站测速,可以看一个网站测速性能测试的简单教程【附15个常用网站测速工具】和两篇Google PageSpeed Insights测试如何做到满分/100分的文章!
标签
这就是目前免费的cloudflare cdn加速手段。我在页面规则中禁用了性能优化,所以不建议打开。还有一个付费的据说可以大大提速。我没用过。经过以上优化,大多数人应该可以在3秒钟内打开我的https://sleele.com/网站。
Railgun是Cloudflare为商业和企业客户提供的终极加速解决方案。要使用它,首先需要将网站包升级到Business或Enterprise,然后需要在服务器上安装必要的软件,并在Cloudflare上完成配置。这相当于一个双边加速软件,其实现原理是让服务器与Cloudflare建立长期的TCP加密连接,使用Railgun独有的协议代替HTTP协议,可以明显降低连接延迟。此外,它缓存动态页面:考虑到大多数动态页面包含大量相同的HTML信息,当用户请求新页面时,服务器只会发送那些更改的内容。这相当于多重Gzip压缩。
文章转自sleele的博客,略有改动。参考文章列表:
利用CloudFlare CDN加速张戈博客的经验和技巧分享
CDN启用后,网站获取用户真实IP:cloud flare CDN真实IP地址(Nginx,Apache)
CloudFlare免费CDN加速定制节点-CloudFlare可选IP加速CDN速度