http请求过程及性能优化分析
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请求过程及性能优化分析相关推荐
- 如何从8 道面试题中,看出浏览器渲染过程与性能优化
前言 移动互联网时代,用户对于网页的打开速度要求越来越高.百度用户体验部研究表明,页面放弃率和页面的打开时间关系如下图 所示. 根据百度用户体验部的研究结果来看,普通用户期望且能够接受的页面加载时间在 ...
- 性能优化分析及常见性能优化策略总结
最近,大家似乎都对性能优化分析,这一方面比较感兴趣.一方面是比较感兴趣,另一方面就是遇见许多类似的状况,但是,却不知从何下手,根源在哪里?应当如何正确优化?首先,先跟大家讲解下常见的性能优化策略分类! ...
- 性能优化分析(更新中)
更新日志,分多次更新 2021-10-24 第一个版本 应用层systemtrace tag,systemtrace分析,LayerType离屏缓存相关内容 更新traceView 更新常见内存泄漏, ...
- Unity性能优化分析思路
1)Unity性能优化分析思路 2)Unity2020后Paticle子节点旋转并把ScalingMode设置为Hierarchy后,对根节点进行缩放时表现不正常 3)FBX默认会冗余lit.mat ...
- MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上. 我们知道MySQL的性能优化方法,一般有建立索引.规避复杂联合查询.设置冗余字段.建立中间表.查询 ...
- ubifs性能优化分析
本文通过分析ubifs的mount.read.write和commit流程,挖掘ubifs背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案. 1. ubifs mo ...
- mysql性能优化分析 --- 上篇
概要 之前看过<高性能mysql>对mysql数据库有了系统化的理解,虽然没能达到精通,但有了概念,遇到问题时会有逻辑条理的分析; 问题 问题:公司xxx页面调用某个接口时,loading ...
- 一次 group by + order by 性能优化分析
原文:我的个人博客 https://mengkang.net/1302.html Table of Contents 背景 准备工作 开启慢日志 性能分析 发现问题 索引示例 查看 optimizer ...
- 达梦数据库-系统函数(过程)及性能优化
系统过程和函数使用 INI参数管理函数 获取INI参数配置 SF_GET_PARA_VALUE(scope, ini_param_name)scope 表示从哪里取值 1: 从INI配置文件中获取参数 ...
- Web性能优化系列(1):Web性能优化分析
本文由 伯乐在线 - 鸭梨山大 翻译,sunbiaobiao 校稿.未经许可,禁止转载! 英文出处:gokulkrishh.github.io.欢迎加入翻译小组. 如果你的网站在1000ms内加载完成 ...
最新文章
- 如何从Exchange Server 2007/2010上删除邮件
- String转BigDecimal,BigDecimal常用操作,以及避免踩坑
- dockerfile arg_Dockerfile最佳实践
- sql server 2008安装错误(无法处理异常)
- android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
- java返回泛型_Java泛型从泛型方法返回持有者对象
- 启动报错 classnofoundexception org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- HashMap,LinkedHashMap和Hashtable类的深入剖析与理解
- SIFT特征提取原理
- Android车载开发基础学习——蓝牙通信是如何实现的?
- 干货 | 七年留美经验,帮你省钱自助游美国
- 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能(转)
- javascript判断常用浏览器版本和类型兼容处理
- BZOJ2069 POI2004ZAW(最短路)
- codeforces 1000A,T-sthirt
- 谷歌收购网址导航站265.com
- 阿里云CentOS环境之-实战docker集群swarm(十五)
- apt-get install 连同诸多依赖包一并安装的指令
- libsvm中grid.py的使用
- RTC实时时钟(STM32)
热门文章
- Spring Cloud从入门到精通(四):熔断器 Hystrix
- jsmind-网页版的由js实现的思维导图
- 修改状态栏字体颜色和背景颜色
- PI控制器概念 笔记
- jclasslib修改jar包中class文件 IDEA
- (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
- mysql sql多个like性能_一个sql很多个not like的简化语句
- Java初级程序员面试总结(五)--Redis篇
- 京瓷300i_kyocera cs 300i kx驱动下载
- python用的编程软件是什么,python编程软件用哪个好