概述
AJAX 异步的js和xml,主要是用于发送异步请求来发送请求数据 (同时他也支持同步)
同步和异步
同步(相当于一个队列按照先进先出的顺序执行) 异步(相当于多个队列 彼此之间没有联系)
线程和进程
- 进程就是进行中的程序
- 线程是进程的最小单位(js是单线程的语言)(work类 用于开辟工作线程)
请求和响应
- 请求
- 客户端请求服务器端 (携带数据)
- 响应
- 服务器端响应客户端(携带数据)
AJAX的请求过程
示例 浏览器访问百度图示
主要步骤
- 浏览器实例化请求对象
- 携带数据填充到请求对象,发送请求
- 服务器接收请求 响应数据 (将响应数据填入到请求对象中)
- 浏览器监听请求对象的状态变化
- 在对应的监听处理中获取数据
代码实现
AJAX的核心对象及相关内容
核心对象
XMLhttpRequest
相关属性及方法
属性
-
readyState 表示当前xhr的状态码
-
status 表示http的状态码
-
responseText 表示对应的响应文本
-
upload 获取上传对象
-
timeout 设置超时时间 (可以赋值)
-
responseType 表示响应类型
-
responseurl 表示响url地址
-
responseXML 表示响应xml内容
-
responsetext 表示对应的响应文本 方法
-
open 打开连接
-
send 发送请求
-
setRequestHeader 设置请求头
-
getAllrsponeHeaders 获取所有的响应头
-
getResponseHeader 获取对应的响应头的值
-
overrideMimeType 接收mime来替换服务器返回的类型
请求和响应的构成
请求 (request)
请求头 请求头是用于携带头信息(优先解析请求头)
请求体
请求的内容主体
post 请求携带的数据 分段解析
响应 (response)
响应头
响应携带的头
响应体
响应的数据
readystate的值
status的值(http的状态码)
后端数据返回具备的内容
- 相关数据 data
- 对应的状态码 code
- 对应解释信息 message
接口文档相关生成
swagger (结汇网站) ....
缓存
概述 缓存就相当于将当前内容进行下载,下次在访问的时候直接调用(速度快) 强制缓存
强制缓存就是不需要再次请求对应的服务器,直接访问缓存的内容(强制性操作)。当前内容或者文件必须没有变化,如果有点变化那么久不执行强制缓存,或者当前没有采用强制缓存,那么也不会走强制缓存。
强制缓存的实现
对应的响应头来设置的。
- exoires 实现 (http 1.0)
- cache-control 实现(http)
协商缓存
需要再次请求服务器验证当前的内容是否更改,如果更改那么重新返回数据,如果没有更改那么就走缓存(强制缓存的优先级高于协商缓存)
协商缓存的实现
主要是通过对应的响应头来进行验证的
- last-modified 最后修改时间
- etag 当前文件的标识
总结
-
强制缓存 优先于协商缓存 执行 如果当前不走强制缓存那么就会访问协商缓存
-
强制缓存不需要再去请求对应的服务器 而协商缓存需要重新请求服务器
-
强制缓存使用expries来进行控制 (http1.0)(http1.2新增chache-control来进行控制)
-
协商缓存使用last-modified及etage两个内容共同控制
-
强制缓存使用 如果没有使用缓存 name返回对应的状态码为200,如果使用了那么就会保持之前返回的内容
-
协商缓存 如果没有使用 那么返回状态码为200 如果使用了那么返回的状态码为304
-
缓存可以减少对应http请求,提高浏览器的效率,减小服务器的压力。
get请求
概述
get请求是http1.0内置的请求,get请求为默认请求方式,get请求主要用于获取数据
主要特点
- get请求为默认请求方式
- get请求传参通过url拼接传参(?name=jack&age=18)
- get传参有对应的大小限制(2kb)
- get传参对应的数据是惨在请求头中
get封装
post请求
概述
post请求是将对应的数据封装成一个表单对象进行提交(http 1.0内置请求方式),需要指定请求方式为post
主要特点
- post请求发送的树是存放在对应的请求体中进行提交的(容量大)
- post请求不会暴露对应的数据在地址栏(较get而言更为安全)
- post请求不会有历史记录 (get请求有历史记录)
- post请求需要手动指定(指定请求方式为post)
- post请求可以指定的提交的数据类型(默认为表单类型)
基础post 请求
测试工具
postman
示例