Net HTTP_1.1 优化
优化 HTTP/1.1 协议 :
- 尽量避免发送 HTTP 请求: 缓存技术
- 尽量减少请求次数 : 合并
- 减少 HTTP 响应数据大小 : 压缩
缓存
重复性 HTTP 请求 , 将请求-响应数据缓存在本地 , 下次请求直接拿本地数据
缓存失效
服务器发送 HTTP 响应时, 过期的时间放在响应头部上
- 客户端发现缓存过期,就重新发送网络请求
客户端重新发送请求时,请求头 Etag = 第一次请求的响应头部的摘要 (唯一标识), 服务器本地摘要与请求摘要对比
- 不同 , 响应带上最新资源
- 相同 , 响应
304 Not Modified
, 客户端的缓存有效
减少 HTTP 请求数
减少 HTTP 请求次数 :
- 减少重定向请求次数
- 合并请求
- 延迟发送请求
重定向
重定向请求 :
- 服务资源因某种原因从 url1 移到 url2, 但客户端不知道,会继续 url1 请求
- 服务器会返回 302 和 Location, 让客户端再对 url2 请求
性能 : 重定向请求越多, 客户端发 HTTP 请求优越多, 网络性能就越低
减少方法 :
- 重定向由代理服务器完成,就能减少 HTTP 请求次数
- 代理服务器知道重定向规则, 就能减少消息传递次数
代理 :
重定向规则 :
重定向响应码:
- 301 和 308 : 客户端将重定向响应缓存到本地磁盘,客户端用 url2 替代 url1 访问服务资源
合并请求
合并请求的方式: 合并资源, 将多个小资源的请求合成一个大资源的请求
- 问题 : 当大资源的某个小资源发生变化后,客户端要重新下载整个大资源文件,会带来额外的网络消耗
合并请求方式 :
- 多个小图片, 客户端要发多个请求: 将小图片, 用
CSS Image Sprites
合成一个大图片, 浏览器再 CSS 将大图片切成多张小图片 - 服务端用
webpack
打包工具将 js, css 合并成大文件 - 图片用 base64 编码,以 URL 嵌入 HTML 文件
图片合并 :
延迟发送请求
资源按需获取, 达到延迟发送请求
- 如: 向下滑动页面时,才向服务器请求数据
对 HTTP 响应数据压缩, 减少响应数据大小, 提高网络传输的效率
压缩
压缩方式 :
- 无损压缩
- 有损压缩
无损压缩: 资源压缩后, 还能恢复原样,适合: 文本文件、程序可执行文件、程序源代码
- gzip
- br: 压缩效率更高
- 客户端支持压缩算法:
Accept-Encoding: gzip, deflate, br
- 服务器会其中个压缩算法, 响应资源压缩
Content-Encoding: gzip
有损压缩
有损压缩: 压缩后, 只能恢复接近原样, 如: 音频、视频、图片
- 图片压缩:
WebP
: 压缩较高
HTTP 请求 :
- q 质量因子: 资源质量
Accept: audio/*; q=0.2, audio/basic