Net HTTP_1.1 优化

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
相关推荐
BreezeJiang3 小时前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
草莓熊Lotso5 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
XR1234567885 小时前
汽车制造园区网络怎么建?柔性产线与 AGV 的选型逻辑
网络·汽车·制造
IT大白鼠5 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
Interview Aid1125 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
CoderIsArt13 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
贝锐14 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
IT大白鼠15 小时前
MSF二次开发与自定义模块编写
网络·安全·web安全·msf
Julien200415 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
AI情绪识别开源15 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试