(1)域名解析
(2)发起TCP的三次握手
(3)建立TCP连接后发起http请求
(4)服务器响应http请求,浏览器得到HTML代码
(5)浏览器解析HTML代码,并请求HTML代码中的资源
(6)浏览器对页面进行渲染呈现给用户
(7)连接结束
2.常见状态码HTTP状态码:当用户访问一个网页时,浏览器会向网页所在的服务器出请求,当浏览器接收并显示网页前,此网页所在服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求,HTTP状态码用于描述服务器对请求的处理结果。
HTTP状态码分类:
(1)1**:信息,服务器收到请求,需要请求者继续执行操作
100 (继续): 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101 (切换协议): 请求者已要求服务器切换协议,服务器已确认并准备切换。当前各种框架的热加载会用到
102 : 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
(2)2**:成功,操作被成功接收并处理
(3)3**:重定向,需要进一步的操作以完成请求
(4)4**:客户端错误,请求包含语法错误或者无法完成请求
(5)5**:服务器错误,服务器在处理请求的过程中发生了错误
常见的HTTP状态码:
200——OK,请求成功
301——Moved Permanently,资源(网页等)被永久转移到其他URL
302——Found,307——Temporary Redirect,临时重定向,请求的文档被临时移动到别处
304——Not Modified,未修改,表示客户端缓存的版本是最近的
401——Unauthorized,请求要求用户的身份认证
403——Forbidden,禁止,服务器理解客户端请求,但是拒绝处理此请求,通常是权限设置所致
404——Not Found,请求的资源(网页等)不存在
500——Internal Server Error——内部服务器错误
502——Bad Gateway,充当网关或代理的服务器从远端服务器接收到了一个无效的请求
504——Gateway Time-out,充当网关或代理的服务器,未及时从远端服务器获取请求
3.浏览器的缓存机制 4.CDN全称 Content Delivery Network,即内容分发网络。
摘录一个形象的比喻,来理解CDN是什么。
10年前,还没有火车票代售点一说,12306.cn更是无从说起。那时候火车票还只能在火车站的售票大厅购买,而我所在的小县城并不通火车,火车票都要去市里的火车站购买,而从我家到县城再到市里,来回就是4个小时车程,简直就是浪费生命。后来就好了,小县城里出现了火车票代售点,甚至乡镇上也有了代售点,可以直接在代售点购买火车票,方便了不少,全市人民再也不用在一个点苦逼的排队买票了。
简单的理解CDN就是这些代售点(缓存服务器)的承包商,他为买票者提供了便利,帮助他们在最近的地方(最近的CDN节点)用最短的时间(最短的请求时间)买到票(拿到资源),这样去火车站售票大厅排队的人也就少了。也就减轻了售票大厅的压力(起到分流作用,减轻服务器负载压力)。
用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器(假设源站部署在北京电信机房)上了。
CDN缓存
关于CDN缓存,在浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的
Cache-control: max-age //后面会提到
的字段来设置CDN边缘节点数据缓存时间。
当浏览器向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向服务器发出回源请求,从服务器拉取最新数据,更新本地缓存,并将最新数据返回给客户端。 CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。