CDN
脑图
概述
CDN是Content Delivery Network的简称, 即“内容分发网络”的意思。 一般我们所说的CDN加速, 一般是指网站加速或者用户下载资源加速。
举个通俗的例子:
谈到CDN的作用, 可以用8年买火车票的经历来形象比喻:8年前, 还没有火车票代售点一说, 12306.cn更是无从说起。 那时候火车票还只能在火车站的售票大厅购买, 而小县城并不通火车, 火车票都要去市里的火车站购买, 而从县城到市里, 来回就是4个小时车程, 简直就是浪费生命。
后来就好了, 小县城里出现了火车票代售点, 可以直接在代售点购买火车, 方便了不少, 全市人民再也不用在一个点苦逼的排队买票了。
CDN就可以理解为分布在每个县城的火车票代售点, 用户在浏览网站的时候, CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求, 这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器(假设源站部署在北京电信机房)上了。
优点
CDN的优势很明显:
(1)CDN节点解决了跨运营商和跨地域访问的问题, 访问延时大大降低;
(2)大部分请求在CDN边缘节点完成, CDN起到了分流作用, 减轻了源站的负载。
CDN缓存
CDN缓存是什么?
首先, 看看没有网站没有接入CDN时, 用户浏览器与服务器是如何交互的:
用户在浏览网站的时候, 浏览器能够在本地保存网站中的图片或者其他文件的副本, 这样用户再次访问该网站的时候, 浏览器就不用再下载全部的文件, 减少了下载量意味着提高了页面加载的速度。
如果中间加上一层CDN, 那么用户浏览器与服务器的交互如下:
客户端浏览器先检查是否有本地缓存是否过期, 如果过期, 则向CDN边缘节点发起请求, CDN边缘节点会检测用户请求数据的缓存是否过期, 如果没有过期, 则直接响应用户请求, 此时一个完成http请求结束;如果数据已经过期, 那么CDN还需要向源站发出回源请求(back to the source request),来拉取最新的数据。 CDN的典型拓扑图如下:
可以看到, 在存在CDN的场景下, 数据经历了客户端(浏览器)缓存和CDN边缘节点缓存两个阶段。