1、CDN
CDN部署静态内容:JavaScript脚本、CSS样式表、图片、图标、Flash等,不包括html页面。
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是一组分布在多个不同地理位置的Web服务器,用于更加有效地向用户发布内容,在优化性能时,会根据距离的远近来选择。
CDN系统能实时地根据网络流量和各节点的连接,负载状况及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,其目的是使用户能就近地获取请求数据,解决网络拥塞,提高访问速度,解决由于网络带宽小、用户访问量大、网点分布不均等原因导致的访问速度慢的问题。
由于CDN部署在网络运营商的机房,这些运营商又是终端用户网络的提供商,因此用户请求的第一跳就到达CDN服务器,当CDN服务器中缓存有用户请求的数据时,就可以从CDN直接返回给浏览器,因此可以提高访问速度。
CDN能够缓存JavaScript脚本、CSS样式表、图片、图标、Flash等静态资源文件(不包括html页面),这些静态资源文文件的访问频率很高,将其缓存在CDN可以极大地提高网站的访问速度,但由于CDN是部署在网络运营商的机房,所以在一般的网站中都很少用CDN加速。
2、传统的访问网站的过程:
1) 用户向浏览器提供要访问的域名;
2) 浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
3) 浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;
4) 浏览器根据域名主机返回的数据显示网页的内容。
3、使用CDN缓存后的访问网站的过程:
1) 用户向浏览器提供要访问的域名;
2) 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问;
3) 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
4) 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
5) 缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
6) 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
4、最简单的CDN实例:
以爱诚官网例,如www.ac57.com, m.ac57.com等等,它们之间会共享某些内容(如JavaScript、CSS、image、jQuery等),这些公共资源可以放在common.ac57.com这样的公共站点上。
以京东为例,广州的用户请求某图片,只需要从广州的网络运营商机房的CDN缓存服务器获取图片即可。
5、知名的CDN服务:
阿里云的CDN服务:https://www.aliyun.com/product/cdn
百度的CDN服务:https://su.baidu.com/
6、使用CDN的劣势
使用CDN,尤其是非知名的第三方CDN,需要考虑网络的可到达性。第三方的CDN的Host在别人的服务器上,从一定意义上说并非很可控。目前比较知名的包括阿里云,百度云,腾讯云,360云加速等!