为了搞清楚CDN的原理,我头都秃了...

点击上方前端Q,关注公众号回复加群,加入前端Q技术交流群作者:winty的帆宝宝原文地址:https://juejin.cn/post/6944420222757503006今天下班前忽...
摘要由CSDN通过智能技术生成

点击上方 前端Q,关注公众号

回复加群,加入前端Q技术交流群

作者:winty的帆宝宝

原文地址:https://juejin.cn/post/6944420222757503006

今天下班前忽然发现维护的项目网站打不开了,打开控制台一看,原来是资源请求的响应头设置了2个 access-control-allow-origin 导致的。(我寻思这东西就算设置重了不应该也能覆盖么)

image.png
image.png
image.png

解决完问题后,我有了以下疑惑:

  • 请求头和响应头中key的大小写真的有影响么,到底是怎么处理header中的key和value;

  • 运营人员修改配置后,为什么我们访问的节点没有刷新到,什么情况下节点的缓存会刷新;

  • cdn可提供下载加速服务,那它是怎么实现加速的?

  • cdn有哪些优点?

下面我们就带着问题进行探索。Let's Go~

问题一:请求头和响应头中key的大小写真的有影响么?header中的key和value是怎么被处理的?

image.png
image.png

上面做了个小实验,设置了2个类型相同的 key,content-type;它们唯一不同的大小写。可以看到结果,只保留了一个key,value值被拼接起来了。

域名解析的背景

在以前,人们用IP进行互访,后来发现IP太多不好记忆,便有了域名,比如 www.baidu.com,你一看就知道是百度搜索引擎,而不需要管他的服务器IP是多少,但是在最开始通信的时候,电脑路由器不认识域名,只认得IP啊,要怎么去获得对应的IP呢,这时候有了域名解析,就是去请求网络上的DNS服务器,让他们来告诉你这个域名对应的IP是多少。

常见的DNS解析服务商有:阿里云解析,万网解析,DNSPod,新网解析,Route53(AWS),Dyn,Cloudflare等。

CDN加速前

image.png

cdn加速前,域名解析过程如下:浏览器dns缓存
-> 系统dns缓存(Hosts文件)
-> 路由器dns缓存
-> 本地DNS服务器(ISP运营服务提供商)
-> 本地DNS服务器请求根域名服务器(13个,不是只有13台服务器,分布在世界各地),拿到dns记录
-> 本地DNS服务器根据拿到顶级域名服务器的ip,去请求顶级域名服务器(如.com顶级域名服务器)
-> 本地DNS服务器根据拿到二级域名服务器的ip,去请求二级域名服务器
-> ……
-> 直到X级域名服务器返回我们目标域名对应的ip地址后,本地DNS服务器缓存该dns记录,然后返回路由器
-> ……(层层缓存后,返回dns记录结果)
-> 我们的客户端拿到ip地址,利用该ip地址,封装并发起http/http2请求。

备注:前面4个是递归查询,一旦缓存可用,就直接返回,不会再进行后续步骤,后面是迭代查询,最终获取ip地址,才会返回。

不使用cdn时,利用ip发起请求的过程,如广州的用户要请求一个在北京的 IP 地址,过程如下:
广州用户 -> 广州服务器 -> 湖南服务器 -> 湖北服务器 -> 北京服务器

这样传递数据,就很浪费时间,那如果广州服务器就缓存了数据或资源呢,那不就可以就近获取了。这便是cdn的部分策略了。

备注:TLD,意为顶级域名。
域名层级如下图:

image.png

CDN的工作原理和缓存策略

CDN概念

CDN(Content Delivery Network,内容分发网络)是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值