HTTP/3 Alpn? 为什么网站开启了HTTP3浏览器却是用HTTP/2访问?
Nginx1.25 开始开始支持HTTP/3, 当我使用最新的Chrome(116.0.0.0)访问网站,并非每次都是用HTTP/3,很多次访问同一网站还是采用HTTP/2,就如下图,是5分钟内先后两次的访问记录。
这里就引出一个问题,客户端这里专指浏览器是怎么知道要访问的网站采用的HTTP1.1、HTTP/2还是HTTP/3?
Nginx1.25 开始开始支持HTTP/3, 当我使用最新的Chrome(116.0.0.0)访问网站,并非每次都是用HTTP/3,很多次访问同一网站还是采用HTTP/2,就如下图,是5分钟内先后两次的访问记录。
这里就引出一个问题,客户端这里专指浏览器是怎么知道要访问的网站采用的HTTP1.1、HTTP/2还是HTTP/3?
版本 | 发行年代 | 特性 | 使用情况 |
---|---|---|---|
http/0.9 | 1991 | GET method only | 废弃 |
http/1.0 | 1996 | 头, 缓存,语言 | 爬虫 |
http/1.1 | 1999 | keepalive, upgrade,ranges,hosts | 流行 |
SPDY(google过渡版本) | 2009 | NPN、 单一连接、gzip header、流控制 | 升级为h2 |
http/2 | 2005 | ALPN、 HPACK、priorities, server push | 流行 (40% 2019) |
http/3 | 2018 | quic | draft |
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。