首页 > 其他分享 >Web 性能优化:HTTP

Web 性能优化:HTTP

时间:2022-11-20 23:33:52浏览次数:69  
标签:Web 缓存 HTTP 请求 TCP 优化 连接 服务端

个人博客

以 Web 应用为代表的互联网肇始于 1991 年 Tim Berners-Lee 提出的 HTTP/0.9 协议,经过 30 多年的发展,伴随着 IT 巨头的明争暗斗,已经逐渐渗透进我们生活的方方面面,成为当代社会不可或缺的组成部分。

HTTP 协议的历史

1991 年,HTTP(HyperText Transfer Protocol,超文本传输协议)第一个版本 — HTTP/0.9,诞生了,功能比较简陋,设计目标包括:

  • 支持文件传输;
  • 能够通过索引搜索 HTML;
  • 格式化协商机制;
  • 能够把客户端引导到不同的服务器。

HTTP/0.9 奠定了整个互联网交互的大框架:

  • 客户端(请求)—服务器(响应)模式;
  • 基于 TCP/IP 协议栈。
  • 在 HTTP/0.9 版本中,TCP 连接在每次 HTTP 请求后都会关闭。

1996 年,HTTP/1.0 版本(rfc1945)发布,主要是参考性质的,总结了一些最佳实践和模式,增加了内容协商,响应对象不再局限于 HTML,彼时一个请求仍然对应一个 TCP 连接。

1997 年,HTTP/1.1 版本(rfc2068)正式发布,厘清了之前版本中很多有歧义的地方,并对性能进行了优化:

  • 持久连接,复用 TCP 连接;
  • 分块编码传输;
  • 字节范围请求;
  • 增强的缓存机制;
  • 传输编码;
  • 请求管道,不用等待前一个请求回应就发送下一个请求,支持的不多。

2015 年,HTTP/2 版本(rfc7540)发布,主要聚焦性能,将原来基于文本传输的模式改为基于二进制数据,在传输层之上引入二进制分帧数据层,每个【主机:端口】组合仅一个持久的 TCP 连接,在该连接上进行多路复用。

2022 年,HTTP/3 版本(rfc9114)发布,使用的传输层协议从 TCP 改为 UDP。

从 HTTP/0.9 到 HTTP/3,针对不同的场景和需求,协议在不断地进化,但现实世界中难以对大量的软硬件进行统一升级,所以无法做到一键切换,新旧协议的交替往往需要持续一段相当长的时间(一般 5-10 年),所以在一段时间里,客户端、代理、服务器仍然需要同时支持多种版本的 HTTP 协议。

性能优化

对 Web 应用来说,性能优化可以简要描述为:如何更快地完成用户请求。

个人理解的核心原则是:(在大多数时候)尽量减少网络请求。—— 有点像车轱辘话

标签:Web,缓存,HTTP,请求,TCP,优化,连接,服务端
From: https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/16886755.html

相关文章

  • Web 性能优化:TLS
    Web性能优化:TCP......
  • JAVA 代码优化
    1基本类型使用优化1.1尽量重用对象特别是对于String对象的使用,如需拼接字符串,使用如下例子://拼接字符串,不重视效率的写法Stringstr1="aaa";str1=str1+"bbb"......
  • 【Jmeter】21天打卡 05之配置元件之http信息头+Cookie管理器
    新建测试计划-线程组-取样器(http请求)-添加监听器(查看结果数)在http请求中输入www.baidu.com,查看结果树请求中的requestheaders头部字段包括如图1   Connectionk......
  • SQL优化
    1SQL基本优化规则(Oracle)1.1SQL语句尽量用大写的,因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。1.2使用表的别名,当在SQL语句中连接多个表时,尽......
  • 寻找目标文件(优化版)
    此程序比上一个程序寻找文件更快#pragmawarning(disable:4996)#include<stdio.h>intmain(){intys[]={1,2,3,4,5,6,7,8,9,10};//可自行修改intn=0;......
  • Nginx For Windows HTTP转发和负载
    NginxForWindowsHTTP转发和负载​​一、需求说明​​​​二、配置文件​​一、需求说明使用Nginx进行端口转发,并且负载到两台服务器的服务上。监控本地服务器的9099端......
  • 利用xmake在c++项目中编译与调用webassmebly
    最近在尝试用webassembly替代lua作为c++程序的脚本。刚好xmake也支持了webassembly的编译。下面是踩坑记录。项目需要两个target:一个c++项目、一个webassembly项目。需要......
  • HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity【转】
    varhwrs=(HttpWebResponse)hwr.GetResponse()if(hwrs.ContentEncoding.ToLower().Contains("gzip")){outhtml=newStream......
  • P8195 [传智杯 #4 决赛] 小智的疑惑 ----- 字符串匹配、KMP算法优化next数组
    题目描述传智专修学院给了小智一个仅包含小写字母的字符串 ss,他想知道,里面出现了多少次子串 chuanzhi 呢。我们称一个字符串 tt 是 ss 的子串,当且仅当将 ss 的......
  • 使用位运算优化 N 皇后问题
    使用位运算优化N皇后问题作者:Grey原文地址:博客园:使用位运算优化N皇后问题CSDN:使用位运算优化N皇后问题问题描述N皇后问题是指在n*n的棋盘上要摆n个皇......