昨天经过测试,已经知道了cloudflare节点间缓存是不同步的,今天在相关的群里说起这个事情,结果还是有争论,有的人认为CDN节点之间本身就是独立的,当然不会缓存其它节点的内容;也有人认为,节点在加载内容时,会从其它节点加载内容,也会达到一个节点有了缓存,其它节点都有缓存的效果。
于是我再次测试了,结果发现,国内IP打开过多次的一个网页,用本地IP打开抓包,会发现返回协议头里有:hit字样,但是用美国IP打开抓包,还是MISS。也就是说节点不会从已经有缓存的节点上加载内容,而是直接从源站加载,然后缓存到相应的节点上。
后面群里有人说起,用cloudflare加速国外网站,速度很好,我持反对意见,因为我认为国外CDN节点加载源站的内容,然后把内容返给用户,这个过程中,源站的速度并没有增加,国内用户到源站的距离没有缩短,过程中还多了一个源站到CDN节点的转发,速度应该会更慢。但群里这个网友说他经过测试发现,用cloudflare加速他的法国服务器上的网站,速度比直接用法国服务器速度快很多,为什么会这样呢?
后面群里一个网友用一幅图说明了这个问题:
从这个图可以看出来,访客访问某个没有缓存的网页时,离源站近的CDN节点会先加载内容,然后通过CDN节点转发到另外一个节点,最后转发到离访客最近的节点,由于节点和节点之间的转发速度很快(网络质量好,抖动少、不丢包),比访客直接访问法国服务器的速度快很多(直接访问,网络质量差,抖动多,丢包高)。
因此,用CF加速海外网站,即使CF节点上没有缓存,也会比直接访问快很多,推荐使用!