1. http的连接管理
1. 短连接
1.三次握手 建立连接
2.四次挥手 断开连接
2. 长连接
因为短连接每次都要三次握手,四次挥手 导致效率很低。所以就对一个连接进行复用。
3. 链接相关的头字段
1. Connection: keep-alive 表示支持长连接, 服务器通常不会主动关闭长连接。
2. Connection: close 客户端请求关闭长连接
服务器也可以设置一些值来管理长连接,如nginx, 可以设置keepalive_timeout 过一段时间没有请求就关闭长连接
keepalive_request 请求超过一定数量就关闭此长连接
4. 队头阻塞
http的请求-应答模型导致的,由于没有轻重缓急的优先级,只能是最先发的请求被应答了,没有被应答以前,其他的请求只能
排队
5.解决方案 – 并发连接
对同一个域名发起多个长连接 协会规定是两个,但是浏览器厂商并发数量都是6-8个。
但是对于现代化的互联网,依然性能乏力,这个时候新的方案 ‘域名分片’ 技术就应运而生了:多开几个域名都指向同一台服务器
这样请求数量就上去了
2 http的重定向和跳转
跳转的去分: 1,由a链接跳转的称为主动跳转 2,由服务器发起的跳转称之为被动跳转,又被称为 ‘重定向’
1.重定向的状态码
1. 301 永久重定向
2. 302 临时重定向
3. 303 类似于302 ,但是会得到一个get页面,避免重复提交表单
4. 307 对应302,方法和实体不允许改变
5. 308 对应301,方法和实体不允许改变
2.使用重定向时的常见
1. 资源不可用
2. 避免重复
3. 注意事项
1. 性能损耗
2. 循环跳转
3. http的cookie机制
cookie就是给http的无状态增加记忆的。
1. cookie相关的字段
1. 响应头字段 set-cookie 登陆以后 服务器一般会种一下cookie给客户端 可以设置多个cookie
2. 请求头字段 下次请求就会带过去给服务端 来确认身份
2. cookies的属性
1. Expires 2021-01-01
2. Max-Age 1000s后 单位是秒 浏览器有限读取这个属性
3. Domain 域名
4. path 路径名
5. httpOnly 禁止前端访问
6. sameSite 防范跨站请求伪造
7. secure 只能通过https加密传输
3. cookie的使用
1. 身份识别
2. 广告追踪
4. http的缓存控制
1. 缓存
缓存是优化系统性能的重要手段,cdn的实现就是缓存, cdn 只能缓存静态资源,一般来说动态资源请求使用cdn 也会非常快像上了高速公路一样。
2. 服务端的缓存控制
常见字段 Cache-Control的值
1. max-age=30 只能存30秒
2. no-store 不允许缓存
3. no-cache 可以缓存但是 每次使用必须去服务器验证校验是否过期 是否有最新版本
4. must-revalidate 和no-cache 但是只要不过期就无须去服务器校验
3. 客户端的缓存控制
客户端也可以使用 Cache-Control这个头字段向服务器发起请求
4. 条件请求
Cache-Control 这个头字段只能到期后去服务器验证资源是否过期,一般做法需要 先发一个head请求看看是否过期,过期再发get请求,这样一来就很麻烦,
需要发两个请求才能得到结果,成本太高了,所以 这里就使用了新的头部字段去控制
1. 响应头部字段 Last-Modified 最后修改时间 Etag 资源元信息编码; 服务端先把资源信息返回客户端
2. 请求头部字段 If-Modified-Since If-None-Match(优先级高) ;客户段拿到信息携带过去查询, 返回304 表示可以直接用,否则返回最新资源
If-Modified-Since 对应 Last-Modified If-Modified-Since 是指只有服务器上的资源 只有被修改过才会返回新的 否则返回304
If-None-Match 对应 Etag If-None-Match 是指 如果服务器的etag和这个相同,就返回304 否则就返回新的资源并且更新etag
5. http的代理服务
计算机世界的任何问题都可以通过引入一个中间层来解决。 代理服务这个小天地里可以做很多事情,为http带来双赢。
1.基本功能
1. 负载均衡
2. 健康检查
3. 安全防护
4. 加密卸载
5. 数据过滤
6. 内容缓存
2. 代理头相关字段
都是事实标准的字段 没有具体规定的
1. via 没经过一个代理节点 就要把代理的信息写上去。 这个是看不到 被代理人的真实信息的
2. X-Forwarded-For 为谁转发, 最左边就是被代理人的ip
2. X-Real-IP : 简化版的 X-Forwarded-For 只有被代理人的ip
3. 代理协议
这也是一个事实标准协议