CDN 是什么?
首先,CDN并非是做加速的,CDN 的全称叫作 Content Delivery Network,中文名“内容分发网络”,和加速压根不沾边,那么为什么在互联网上,90% 的教程都在教你用 CDN 加速源站呢?
CDN 慢的根本原因
要分析为什么 CDN 慢了,首先我们要知道套上 CDN 之后发生了什么。
当一个访客请求网站时:
User -> CDN -> website
如果 CDN 正常缓存了内容,那么请求就会截止在 CDN 上直接发送给访客;但如果 CDN 没有缓存,那么 CDN 需要先请求你的源站,再把响应发给访客,此时 CDN 就在充当反向代理的角色。
同时,当加入 CDN 后,网络复杂度明显提升了,你的源站服务器很可能是 BGP 优化线路、CN2-GIA 优化线路等等,但 CDN 不一定,甚至 CDN 回源的路上也不一定能吃到线路优化。
这就导致,原本用户用 100ms 就成功连接了你的服务器,结果套上 CDN 后,用户先花费 200ms 连接到 CDN,CDN 再花费 200ms 去回源,网站性能不增反降
如何解决 CDN 速度慢的问题
首先,先确定你是什么情况:
境外:统指不受 GFW 限制的地区(含中国港澳台地)
- 境外服务器免备案向全球提供服务(包含中国大陆)
- 境外服务器免备案向境外提供服务
- 中国大陆内服务器向全球提供服务
后两种情况几乎不需要任何特殊的优化操作,任何 CDN 的任何使用方式都可以获得不错的效果
如果是第一种情况,需要特别注意一下服务器的选择,比较推荐的是雨云的中国香港区域的服务器,三网混合或三网直连对国内更友好,同时能兼顾 Cloudflare 这种 CDN,填写优惠码 github 还能获得首月五折优惠。
对于第一种情况,选择 CDN 时尽可能遵循两个原则:
- 中国大陆优化优先
- 分地区解析
中国大陆优化优先
不久前,阿里云、腾讯云等厂商都在抄 Cloudflare 的 CDN+DNS 运营模式,但应为财力不足和设计师没用过 Cloudflare,他们分别设计出了一个被砍成“半个反向代理”的 CDN 以及一个“迷宫控制台”的管理页面。不过,对于国内加速,也是依然可以使用的
不过,如果你有一个喜欢的 DNS 服务商,将 DNS 不托管给 这里是好的(即通过 CNAME 接入而不是通过 NS 接入)
比如我就是给国内站点的域名解析接入了 Cloudflare 但是 CDN 使用阿里云 ESA。不过说到底,貌似对于阿里云来说,ESA 和 CDN 是两个东西
分地区解析
某些 DNS 服务商可以配置分线路解析,不过一定要选一个自己认为好的 DNS 提供商,我这里只是做演示
Cloudflare 貌似是不支持分线路解析的,也可能付费订阅是支持的,但是我没用过付费订阅,对于国内大部分厂商,在我的尝试下大多数支持分线路解析,在创建 DNS 记录时可以选择这样的字段:
当然也可以细分选择,不过免费版只能选到这个粒度,甚至