这是我参与「第五届青训营 」笔记创作活动的第10天
今天的视频课 [HTTP协议应用场景分析] 及 [HTTP协议实战分析] 是HTTP真实的场景实践,以「今日头条」浏览器为例,为大家展示线上的 demo,对于该案例涉及的请求中的缓存策略展开具体分析,同时将根据不同的环境,介绍在日常的开发中,同学如何实现去发起一个协议,将重点带来浏览器环境的应用实战,进一步基于不同环境下,如何做到网络优化,提升用户体验。。
我把今天老师讲解教授的知识进行了整理和概括,具体内容如下:
1.场景分析
(1).静态资源
我们以Chrome浏览器为例,使用Chrome浏览器打开今日头条网站。通过右键->检查打开调试台,并切换到network查看静态资源。通过观察我们可以看到里面有许多我们上一节课所学的东西。我截取了几张图片方便观看,如下:
好了,那我们再来看看什么是静态资源呢?静态资源方案就是:缓存+CDN+文件名hash。
CND(Content Delivery Network),是通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
(2).登录
登录的业务场景主要分为:表单登录与扫码登录。登录实现采用的技术是SSO。登录过程中请求是怎么回事,HTTP发生了什么呢?我们可以采用以下方法观察:
- 账号密码登录
- 打开控制台-network-勾选preserve log - 过滤quick——login
- 观察请求
主要的请求结果如下:
我们可以发现登录请求中request method与静态资源不一样,是options,为什么会有options的请求?是因为跨域的问题。跨域通俗点讲,就是协议、端口、域名任一一个不相同就会存在跨域。
那怎么解决跨域?我们可以通过以下几个方法实现:
- CORS
- 代理服务器
- Iframe
另外,上一节课我们知道了HTTP是无状态的,那浏览器是怎么记住我们的浏览记录的呢?主要使用以下方法实现这一功能:
2. HTTP协议实战分析
我们进行了HTTP的场景分析,知道了它是怎么工作的,那我们怎么发起HTTP请求与响应?可以通过以下几种方法:
- 浏览器篇
我们可以使用AJAX提供的XHR发起HTTP请求,并接收响应。具体实现如下:
2. node篇
在node中实现HTTP请求,无需安装其他依赖,但是功能有限,具体实现如下:
3.实战
实际开发中我们常用的请求库是axios,它支持浏览器、nodejs环境,具体实现如下: