http请求

当在浏览器中输入地址至获取服务器的相应,总共经历了以下四个步骤:

DNS解析

在向浏览器输入一个网站时,如www.qq.com,浏览器最终访问的是一个ip地址,也就是说www.qq.com与一个ip存在映射的关系,此时DNS起到了桥接2种关系的功能,在下次访问相同网址时,会先从本地浏览器寻找DNS的缓存,如果不存在,则一级一级向上找。

三次握手


在正式发送请求之前,需要建立客户端与服务器的链接。

RTT

RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。

TCP/UDP区别

与TCP不同,UDP并不关心对放接受请求的状态,是一种基于无连接的处理方式,这样的特点是省去握手,速度更快,但是是无序的,也会有丢包的安全隐患。

TCP慢启动

为了不给网络造成拥堵,减缓网络压力。在首次进行tcp请求时,会限制客户端与服务器交互的数据量的上限,首次为14kb左右,之后以一个指数型成长。

网络性能优化

挺高访问效率,目前的主要方法有:

DNS预解析

<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="http://bdimg.share.baidu.com" />
<link rel="dns-prefetch" href="http://nsclick.baidu.com" />

谷歌和火狐支持,不推荐在多个页面使用dns-prefetch。通过预加载一些域名,提前去做DNS解析,加快响应速度。

域名收敛

由服务器统一汇总不同的域名,由再对访问进行转发。

资源内联

由于每个资源首次访问都存在握手等RTT损耗,越少数量的资源请求,可以节约获取资源的时间,例如一个html中src访问一个css,就不如,将这个css直接以style集成在html当中,会减少访问。(webpack等一些构建工具,也可以将html与css当到一个文件当中。)

服务器渲染

传统的方式显示一个页面会发送多次请求,第一次拿到html资源,然后通过请求,再去拿数据,再将数据渲染到页面上。这样的多次请求,会增加页面的响应时间,如果在服务器端,就将页面渲染好,再发送至客户端,也可以间接减少RTT。即(react等框架的SSR)

图片懒加载

指代在可视区请求图片资源。不赘述了。

HTTP2

http2 的改进主要有:
1.由纯文本分割改为二进制编码。
2.首部压缩,以增量的方式进行数据交互,不重复发送一些不变的信息头。
3.多路复用,服务端推送。

http请求过程及性能优化分析相关推荐

  1. 如何从8 道面试题中,看出浏览器渲染过程与性能优化

    前言 移动互联网时代,用户对于网页的打开速度要求越来越高.百度用户体验部研究表明,页面放弃率和页面的打开时间关系如下图 所示. 根据百度用户体验部的研究结果来看,普通用户期望且能够接受的页面加载时间在 ...

  2. 性能优化分析及常见性能优化策略总结

    最近,大家似乎都对性能优化分析,这一方面比较感兴趣.一方面是比较感兴趣,另一方面就是遇见许多类似的状况,但是,却不知从何下手,根源在哪里?应当如何正确优化?首先,先跟大家讲解下常见的性能优化策略分类! ...

  3. 性能优化分析(更新中)

    更新日志,分多次更新 2021-10-24 第一个版本 应用层systemtrace tag,systemtrace分析,LayerType离屏缓存相关内容 更新traceView 更新常见内存泄漏, ...

  4. Unity性能优化分析思路

    1)Unity性能优化分析思路 ​2)Unity2020后Paticle子节点旋转并把ScalingMode设置为Hierarchy后,对根节点进行缩放时表现不正常 3)FBX默认会冗余lit.mat ...

  5. MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介

    网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上. 我们知道MySQL的性能优化方法,一般有建立索引.规避复杂联合查询.设置冗余字段.建立中间表.查询 ...

  6. ubifs性能优化分析

    本文通过分析ubifs的mount.read.write和commit流程,挖掘ubifs背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案. 1.     ubifs mo ...

  7. mysql性能优化分析 --- 上篇

    概要 之前看过<高性能mysql>对mysql数据库有了系统化的理解,虽然没能达到精通,但有了概念,遇到问题时会有逻辑条理的分析; 问题 问题:公司xxx页面调用某个接口时,loading ...

  8. 一次 group by + order by 性能优化分析

    原文:我的个人博客 https://mengkang.net/1302.html Table of Contents 背景 准备工作 开启慢日志 性能分析 发现问题 索引示例 查看 optimizer ...

  9. 达梦数据库-系统函数(过程)及性能优化

    系统过程和函数使用 INI参数管理函数 获取INI参数配置 SF_GET_PARA_VALUE(scope, ini_param_name)scope 表示从哪里取值 1: 从INI配置文件中获取参数 ...

  10. Web性能优化系列(1):Web性能优化分析

    本文由 伯乐在线 - 鸭梨山大 翻译,sunbiaobiao 校稿.未经许可,禁止转载! 英文出处:gokulkrishh.github.io.欢迎加入翻译小组. 如果你的网站在1000ms内加载完成 ...

最新文章

  1. 如何从Exchange Server 2007/2010上删除邮件
  2. String转BigDecimal,BigDecimal常用操作,以及避免踩坑
  3. dockerfile arg_Dockerfile最佳实践
  4. sql server 2008安装错误(无法处理异常)
  5. android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
  6. java返回泛型_Java泛型从泛型方法返回持有者对象
  7. 启动报错 classnofoundexception org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  8. HashMap,LinkedHashMap和Hashtable类的深入剖析与理解
  9. SIFT特征提取原理
  10. Android车载开发基础学习——蓝牙通信是如何实现的?
  11. 干货 | 七年留美经验,帮你省钱自助游美国
  12. 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能(转)
  13. javascript判断常用浏览器版本和类型兼容处理
  14. BZOJ2069 POI2004ZAW(最短路)
  15. codeforces 1000A,T-sthirt
  16. 谷歌收购网址导航站265.com
  17. 阿里云CentOS环境之-实战docker集群swarm(十五)
  18. apt-get install 连同诸多依赖包一并安装的指令
  19. libsvm中grid.py的使用
  20. RTC实时时钟(STM32)

热门文章

  1. Spring Cloud从入门到精通(四):熔断器 Hystrix
  2. jsmind-网页版的由js实现的思维导图
  3. 修改状态栏字体颜色和背景颜色
  4. PI控制器概念 笔记
  5. jclasslib修改jar包中class文件 IDEA
  6. (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
  7. mysql sql多个like性能_一个sql很多个not like的简化语句
  8. Java初级程序员面试总结(五)--Redis篇
  9. 京瓷300i_kyocera cs 300i kx驱动下载
  10. python用的编程软件是什么,python编程软件用哪个好