让代码更简单

简单说说我对CDN的理解

重要:本文最后更新于2022-10-21 09:17:29,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

这两天为了解决网站TTFB过高的问题,最后追踪到是腾讯CDN导致的,详情请看:腾讯CDN业务变更导致多次请求TTFB变长。让我对目前的CDN有了更深刻的认识,简单谈谈我对CDN的理解。

首先CDN最重要的属性就是能缓存文件到各个CDN节点,就是经常说到的内容分发。但经过多年的发展,很多大厂的CDN功能越来越多,比如腾讯云的CDN、ECDN、SCDN。阿里云倒是没怎么了解,很多功能都被细分了,但内容分发的能力却是不是改变的。

然后就是隐藏源站IP的能力,这个功能非常重要,它能让你在重要时刻免受损失。有句话说得好,我可以不用,但你必须要有。然而很多站长将CDN当做静态资源加速来使用,让源站暴露在公网中,这是非常不好的。就比如前面我遇到的问题,解决方案并非一定要找腾讯那边给改规则。我也可以单独用过二级域名来存放静态文件,然后对二级域名使用CDN加速,但这样我的非静态资源岂不是裸奔在公网上了?又有人出主意,可以再加一个CDN嘛,一个网站2个CDN???真是个天才。

当然隐藏源站IP就意味着需要CDN节点回源,TTFB就会增加。

  • 不使用CDN的时候,用户——源站服务器(TTFB=用户网络延时+服务器处理时间+用户本地DNS解析时间+TCP链接时间+https加密时间)
  • 使用CDN回源的时候,用户——CDN节点——源站服务器(TTFB=用户网络延时+服务器处理时间+用户本地DNS解析时间+TCP链接时间+https加密时间+CDN节点网络延时+节点处理时间+节点DNS解析时间+TCP链接时间+https加密时间)

从上面的流程不难看出使用CDN的情况下,TTFB比直接访问源站服务器耗时更长,但是为什么还要加CDN呢?

原因是CDN的节点响应延时短,源站服务器位置固定,全国总有些地方访问延时大,据我测试,杭州阿里云的服务器全国测ping延时中,最大可达300ms。也就是说不加CDN有的地方访问的TTFB时间=300ms+服务器处理时间+……而加上CDN后,最长延时仅40ms,平均20-30ms。在某些地方即使CDN多了一步回源时间,但CDN响应仍然比直接请求源站速度快。

另外,使用CDN时注意区分是全站加速还是静态文件加速。

腾讯云对CDN业务进行了调整,估计其他大厂也不远了,诸位站长要注意了。至于我为什么不换一家CDN,因为我的主题对腾讯CDN进行了特殊优化,不想改代码,而且我买的流量包不用会过期,浪费可耻!

对于wordpress来说最佳的CDN使用方式应该是像腾讯那些活动页一样,使用完全静态的前端,用户数据如cookie等通过JS来实现,,如此就能将所有的文件都保存到CDN上,实现最快速度的响应。但是这样成本太大,改造一个主题不是那么容易的事。所以有人退而求其次,去掉网站的用户功能,变成一个纯博客,也能将其完全静态化,存到CDN中,如我爱水煮鱼等。

又或者能不能通过请求头判断用户是否登录,没登录就执行CDN策略,登录就回源,理论上来说是能实现的。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (2)

登录后评论
一个网站两个CDN太正常不过了,你的甚至还可以给接口也单独弄个CDN。
我有强迫症,不怕麻烦的话所有请求内容单独加速,肯定贼快。
QQ咨询 邮件咨询 狗哥推荐