我是如何将页面加载时间从6S降到2S的,关于阿里云CDN的一些了解

时间: 2018-12-21阅读: 494标签: 优化写在前面

关于阿里云CDN的详细内容:

时间: 2018-04-17阅读: 1033标签: CDN

生活在信息爆炸的今天,我们每天不得不面对和过滤海量的信息--无疑是焦躁和浮动的,这就意味着用户对你站点投入的时间可能是及其吝啬的(当然有一些刚需站点除外)。

阿里云CDN使用教程

在性能优化的时候,比较常见的一个建议是,把资源部署在CDN上,那么问题来了,CDN是什么?这样做有什么好处?

如何给用户提供迅速的响应就显得十分重要了,这可能成为你留住用户的关键。即使网站设计的再优秀,功能再完美,但是响应的巨慢,用户的耐心很快会被耗光,这可能成为他最后一次访问,这绝对不是危言耸听,最近有幸参与到了公司海外站点项目,对于这点深有体会。

(CDN可以将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。)

DNS

问题的复盘

CDN 使用场景

我们先讲一下域名系统DNS(Domain Name System)吧。

某一天海外运营告知说最近几天的海外站点pv,uv下降严重,希望技术帮忙查看一下原因。WTF,这跟技术有毛线关系,该用的都用了,TM的页面不吸引人,用户不想来,我能怎么办?事实证明不要太自信。

网站站点/应用加速

他是一个分布式数据库,功能是联系域名和ip地址。域名与ip的对应关系,被称为记录(record),可分为各种类型

搬来梯子,熟练的打开海外站点,速度还可以,这个时候差点就给pass了,幸好去看了一下世界各个地区的加载时间后发现,有些地区的加载时间简直不能看。好吧,实锤。

站点或者应用中大量静态资源的加速分发,建议将站点内容进行动静分离,动态文件可以结合云服务器ECS,静态资源如各类型图片、html、css、js文件等,建议结合 对象存储OSS 存储海量静态资源,可以有效加速内容加载速度,轻松搞定网站图片、短视频等内容分发

A: Address,域名指向的IP地址,一个域名可以有多个A记录。NS:Name Server,保存下一级域名信息的服务器地址MX:Mail eXchange,接受电子邮件的服务器地址CNAME:Canonical Name,返回另一个域名,令当前查询域名挑去该域名,多个域名-服务器的映射。PTR: Pointer Record,只用于ip地址查询域名

在查找慢速过程中收获很多决定记录下来。(在这里强烈安利一个可以检测站点 全球各个地区加载时间的网站 -tools.com/website-speed-test.aspx ,真的强烈推荐)

视音频点播/大文件下载分发加速

DNS由下面三个部分组成

文章不包含压缩文件、图片,增加资源域名等等雅虎军规中提到的内容,因为是这些都是必须的。如果你还没有实践的话,建议先遵循再来看。

我是如何将页面加载时间从6S降到2S的,关于阿里云CDN的一些了解。支持各类文件的下载、分发,支持在线点播加速业务,如mp4、flv视频文件或者平均单个文件大小在20M以上,主要的业务场景是视音频点播、大文件下载(如安装包下载)等,建议搭配对象存储OSS使用,可提升回源速度,节约近2/3回源带宽成本。

名称解析器(resolver)域名空间(domain name space)名称服务器(name server)

预备知识

视频直播加速

假如你要访问baidu.com,需要先通过dns系统查出他的ip地址如220.181.57.216,才能访问。

在开始分析和解决之前,惯例先来简单介绍一下涉及的知识点,这样大家可能更加有代入感,也算有个铺垫。

阿里云一站式视频直播服务服务已正式上线发布!基于领先的内容接入与分发网络和大规模分布式实时转码技术打造的音视频直播平台,提供便捷接入、高清流畅、低延迟、高并发的音视频直播服务。支持多直播场景,全景数据统计,丰富角度分析;直播功能丰富,录制回放、实时封面、实时转码、连麦混流。

dns查询的过程

DNS

移动应用加速

那么问题来了,dns是怎么通过域名来查出ip的呢?我们以浏览器输入www.example.com为例,

这个大家应该是很熟悉的,每天都在用的东西

移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化加速分发。提供httpDNS服务,避免DNS劫持并获得实时精确的DNS解析结果,有效缩短用户访问时间,提升用户体验。

检查浏览器缓存检查操作系统缓存,常见的如hosts文件检查路由器缓存如果前几步都没没找到,会向ISP(网络服务提供商)的LDNS服务器查询

说的通俗点,它就是一个用来将ip地址和域名相互映射的数据库,帮助人们更加方便的使用互联网,再也不用记住那些复杂的服务器地址,直接输入服务器地址所绑定域名就可以访问,例如 juejin.im,多好记。

CDN 名词解释

如果LDNS服务器没找到,会向跟域名服务器(Root Server)请求解析,分为以下几步:

CDN

域名

跟服务器返回顶级域名(TLD)服务器如.com,.cn,.org等的地址,全球只有13台,该例子中会返回.com的地址接着向TLD发送请求,然后会返回次级域名(SLD)服务器的地址,本例子会返回.example的地址接着向SLD域名服务器通过域名查询目标IP,本例子会返回www.example.com的地址Local DNS Server会缓存结果,并返回给用户,缓存在系统中。DNS安全问题

内容分发网络(Content delivery network)其实就是一种透过互联网互相连接的计算机网络系统。利用最靠近每位用户的服务器,更快、更可靠地将资源发送给用户。特点就是高性能、可扩展性及低成本。国内两云的这项服务打的不可开胶。

域名是Internet网络上的一个服务器或一个网络系统的名字,全世界,没有重复的域名

DNS反射/放大攻击

由于篇幅的原因这里就不详细介绍了。对它不熟悉的或者想要温习一下的 %E5%85%A7%E5%AE%B9%E5%82%B3%E9%81%9E%E7%B6%B2%E8%B7%AF 。我觉得主要有两个因素来判断CDN服务的优劣---命中率和节点数量。

CNAME记录

向大量开放DNS服务器发送大范围域名查询的DNS请求,并将该DNS请求的源IP地址伪造成想要攻击的目标IP地址。由于请求数据比相应数据小得多,攻击者可以利用该技术放大掌握的带宽资源和攻击流量。

命中率意味着是否回源,回源的请求会打到你的服务器上,那么加载时间就取决与用户与你服务器的通讯状态了,说白了就是听天由命。

它是一个别名记录( Canonical Name );当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。

DDOS攻击可能造成域名解析瘫痪DNS/域名劫持在劫持的网络范围内拦截域名解析的请求,分析请求的域名,返回假的IP地址或者使请求失去响应。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。DNS污染DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。dns污染与dns劫持的区别在于,dns劫持修改了dns的解析结果,dns污染是不经过dns服务器,返回错误信息DNS信息黑客被修改DNS优化

节点数多意味着可供用户选择的响应节点多,优中选优,不必多说了,优秀。

CNAME域名

可以看出,dns解析是一个漫长的过程,如何优化这一过程呢?

网页加载时间

CDN的域名加速需要用到CNAME记录,在阿里云控制台配置完成CDN加速后,您会得到一个加速后的域名,称之为CNAME域名(该域名一定是*.*kunlun.com), 用户需要将自己的域名作CNAME指向这个*.*kunlun.com的域名后,域名解析的工作就正式转向阿里云,该域名所有的请求都将转向阿里云CDN的节点。

DNS Prefetching

网页加载时间其实可以看作是页面响应时间。那么,它是由哪些部分组成的?影响因素都有哪些?哪些我们是可以优化的? 上一张神图,帮助理解(这是优化过后的截图)

DNS

用户在请求某个链接之前,浏览器先尝试解析该链接的域名再将其进行缓存。这样真正请求的时候就不需要进行DNS解析。可以

开始分析

DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

在服务器中响应设置X-DNS-Prefetch-Control的值为on启动预解析

说完了预备的知识点,我们开始按照上图开始撸一遍吧

比如:上网时输入的www.baidu.com会自动转换成为220.181.112.143

HTML中,meta http-equiv="x-dns-prefetch-control" content="on"

DNS Time

边缘节点

对特定域名预解析link rel=”dns-prefetch” href=”//fonts.googleapis.com”

DNS lookup time,就是寻找域名对应ip地址的过程,这个过程时间长短与选择的服务商有关。在查慢速问题这个可能会被忽略,但是不同服务商差距那是相当大,我们原来选择的那家,简直不要太坑(就不点名了),后来换了 Cloudflare,瞬间清爽了。

也称CDN节点、Cache节点等;是相对于网络的复杂结构而提出的一个概念,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度。其作用是将访问量较大的网页内容和对象保存在服务器前端的专用cache设备上,以此来提高网站访问的速度和质量。

域名收敛

这里再次安利,推荐一个网站 ,既可以查看不同服务商的DNS lookup time,还可以查看具体的波动,更加可以通过域名查看它在各个地区的DNS lookup time,简直太好用了,赶紧保存吧。

回源host

建议将静态资源只放在一个域名下面,可以有效减少dns的请求

上一组换之前和之后的对比图

回源host:回源host决定回源请求访问到源站上的具体某个站点。

基于Http协议向HTTPDNS服务器发送域名解析请求,替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式,可以避免运营商的域名劫持和进行精准调度。这过程分为两步

全绿色了有没有,看着有种很爽的感觉,你可以看一看这一项为我们省了多少时间

例子1:源站是域名源站为www.a.com,回源host为www.b.com,那么实际回源是请求到www.a.com解析到的IP,对应的主机上的站点www.b.com

客户端直接访问HttpDNS接口,获取业务在域名配置管理系统上配置的访问延迟最优的IP。(基于容灾考虑,还是保留次选使用运营商LocalDNS解析域名的方式)

Connect Time and SSl Time

例子2:源站是IP源站为1.1.1.1, 回源host为www.b.com,那么实际回源的是1.1.1.1对应的主机上的站点www.b.com

客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。

一个是http网络连接用时,另一个是SSl协议用时,优化空间不大,pass。

协议回源

CDN

Request Time

指回源时使用的协议和客户端访问资源时的协议保持一致,即如果客户端使用 HTTPS 方式请求资源,当CDN节点上未缓存该资源时,节点会使用相同的 HTTPS 方式回源获取资源;同理如果客户端使用 HTTP 协议的请求,CDN节点回源时也使用HTTP协议。

讲完DNS,现在可以开始讲CDN了,CDN的全称是Content Delivery Network,即内容分发网络,它能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

见名知意系列。

过滤参数

典型的CDN系统由下面三个部分组成

First Byte Time

过滤参数是指当URL请求中带?并携带参数请求到CDN节点的时候,CDN节点在收到该请求后是否将该带参数的请求URL请求回源站。如果开启过滤参数的话,该请求到CDN节点后会截取到没有参数的URL向源站请求。并且CDN节点仅保留一份副本。如果关闭该功能,则每个不同的URL都缓存不同的副本在CDN的节点上.

分发服务系统

表示浏览器在从服务器接收第一个字节数据之前需要等待多长时间。获取该数据所需的时间越长, 显示页面所需的时间就越长。

使用示例

最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用 户。同时cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache设备的数量、规模、总服务能力是衡 量一个CDN系统服务能力的最基本的指标

这部分主要能做的就是使用CDN和优化后端性能。

例如: 均响应CDN副本

负载均衡系统

CDN 原来使用的是某云的服务,查看日志发现命中率较低,回源较多,在加上节点数量一般。换成了aws,同样为我们节省了很多加载时间(注册和开通相对麻烦,但是为了用户体验这些都是值得的)

更多精品课程:

主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本 地负载均衡(SLB)。GSLB主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。SLB主要负 责节点内部的设备负载均衡

后端性能优化 如何进行后端优化可以写几本书毫不夸张,但是我们做的就是加配置,有钱人性。啊哈哈哈哈

7天玩转云服务器

运营管理系统

Response Time

云数据库Redis版使用教程

分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。

这部分做的就是页面的静态化还有就是开启服务端的gzip功能,具体方法请google。别小看这个功能,真真可以节约时间。

玩转云存储对象存储OSS使用入门

CDN的过程

dig

阿里云CDN使用教程

使用CDN的方法很简单,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。

想要深入理解DNS查询过程和原理,这个命令是不可或缺的 。通过它你可以灵活、清晰的查看域名DNS解析及其过程,帮助理解。

负载均衡入门与产品使用指南

用户访问未使用CDN缓存资源的过程为:

下面以taobao为例,说一下过程(这里指的是没有缓存的情况下)

阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场)

浏览器通过前面提到的过程对域名进行解析,以得到此域名对应的IP地址;浏览器使用所得到的IP地址,向域名的服务主机发出数据访问请求;服务器向浏览器返回响应数据

1.输入taobao.com后,直接为你服务的DNS(简称为H吧)会将请求报告给最高等级服务器"." (这些最高等级DNS服务器称为root, 就是图中最开始站在食物链顶端的13个,但并不是13台机器,它们使用了任播%E4%BB%BB%E6%92%AD 技术可以在全球设立镜像节点,想想以现在的网络请求的量级来说13台肯定不现实。具体的镜像分布可以参考这里%E6%A0%B9%E7%B6%B2%E5%9F%9F%E5%90%8D%E7%A8%B1%E4%BC%BA%E6%9C%8D%E5%99%A8 ,这些主机的内容都是同步的) ,然后最高等级服务器告诉它你去找.com的DNS,我不管。

使用CDN后

2.得到这个响应后,H又将请求报告给 .com,.com告诉它,你去找taobao的DNS吧,我不管

当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。用户向CDN的全局负载均衡设备发起内容URL访问请求。CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

3.得到这个响应后,H又将请求报告给taobao,taobao告诉它,我不管,你去找我四个小弟吧。

区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

ns4.taobao.com.

全局负载均衡设备把服务器的IP地址返回给用户

ns5.taobao.com.

用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

ns6.taobao.com.

上面的字太多,有点绕?通俗点就是用户访问的资源原本是存放在你自己的服务器,通过修改DNS让用户根据IP等情况来选择合适的CDN缓存服务器来获取资源。

ns7.taobao.com.

CDN的优点

最后被分配给了ns4,从这得到了最终ip,完成了DNS lookup

这样做有什么好处呢?

看到评论中有疑问,其实可以多试几次,会分配到不同的小弟,但是都有淘宝的A记录,所以都可以解析 也可以dig不同的ns4,ns5,ns6,ns7 具像化的看一看。

本地Cache加速,加快访问速度镜像服务,消除运营商之间互联的瓶颈影响,保证不同网络的用户都能得到良好的访问质量远程加速,自动选择cache服务器带宽优化,分担网络流量,减轻压力,集群抗攻击节约成本

最后

来源:%E4%B8%8ECDN%E7%9F%A5%E8%AF%86%E6%B1%87%E6%80%BB.html#more

通过这次排查慢速的过程,不止学到了技术方面可以改进的地方,也真正认识到了对于网站来说,时间就是生命。加载时间长,用户真的是不惯着你。 优秀的站点之所以优秀,就在于把每个细节都做的很优雅。

来自:Gladyu

本文由澳门威斯尼人平台登录发布于Web前端,转载请注明出处:我是如何将页面加载时间从6S降到2S的,关于阿里云CDN的一些了解

相关阅读