http1.1 和http2 和 ServiceWorker
之前写的一篇水文,一次性上传300张图片引发的思考
在12.02上了热搜。关注者从8个涨到400多个,诚惶诚恐。感谢大家的支持和android小姐姐的漂亮眼影。
上热搜和涨粉丝不是本意,csdn只是记录一下 技术日常(之前自己做过博客,不过大部分精力都耗费在打扮和维护网站上,所以图省事直接使用了csdn)。文章里面偶尔说几句骚话还可以,但是不会为了上热搜,取一些哗众取宠的标题或打一些擦边球。废话止于此,正片开始。
1. 浏览器并发限制
1.1 浏览器
在之前说到过,http1.1 的情况下,浏览器会有默认的并发限制。默认6个一组
图片链接
1.1.1 stalled是什么呢
图片来源
1.1.2 为什么浏览器会有这个限制
图片来源
图片来源
这里说的Facade模式,在对中间层的一些浅略的思考 这篇文章中有一些提及
1.2 题外话-爬虫
浏览器会限制连接数。但是爬虫脚本不会 。即使是http1.1的网址,爬虫请求也可以达到每秒请求任意次。
所以写爬虫code的时候需要注意,每秒循环次数不要过多。为了别人,也为了自己。
2. http1.1
2.1 查看http1.1
如果查看网站是使用的http1.1还是http2。 其实很简单,只需要在f12的network中打开相关配置就可以
图片来源
可以看到,http2是这样的:
http1.1是这样的:
2.2 http1.1和https
如果http1.1 有浏览器并发限制,那https也没有呢?
图片来源
图片来源
3. http2
3.1 http2和浏览器并发限制
那么http2 为什么没有并发限制呢图片来源
图片来源
3.2 什么是多路复用
上面说到http2 只所以没有浏览器并发限制,是因为它可以tcp多路复用。那么如果知道它是多路复用呢?
图片来源
图片来源
可以看到如果tcp是复用的,那么connectID就是相同的。来实际看一下:
① http1.1 的connectID是各不相同的
② http2 的connectID 在一段时间内是都相同的
3.3 开启http2
如何从http1.1 转为http2 。可以看 怎样把网站升级到http/2.。这篇文章说的很好,但是可能说的比较复杂,又是nginx版本又是openssl版本的。推荐一个小窍门:直接修改nginx配置,重启nginx试试看。
如果,足够幸运。可以看到和我这个一样。只是变成了http2. 之前的6个并发也消失了
3.4 http1.1小趣文
虽然大部分主流网站,都是http2 了。但是百度确是http1.1
为什么百度还在使用http1.1协议而没有使用http2?
4. ServiceWorker
4.1 network 小齿轮的疑问
在之前的项目上面偶然看见,一次请求发送了2次。而且一个带齿轮,一个不带。但是通过查看日志,的确是发送了一次请求。这是为什么呢?
通过搜索资料,发现有人说这个是servicewroker
图片来源
通过查看,的确有一个写了**from ServiceWorker**。有一个没写
4.2 ServiceWorker介绍
关于ServiceWorker的初步介绍,可以略看 Service Worker: 简介 和 Service Worker ——这应该是一个挺全面的整理
在这里插入图片描述
4.3 ServiceWorker和http1.1
service worker不一定是http2, 1 也可以
4.4 ServiceWorker和https
Service workers只能由HTTPS承载
图片来源
4.6 为什么会是2次请求
之前已经说过,开启ServiceWorker。会通过network看见2次请求,一次带小齿轮,一次不带。
图片来源
图片来源
4.5 ServiceWorker和angular
图片来源
4.5.1 必须通过https访问
必须通过https访问ServiceWorker,上面有提及
4.5.2 部分浏览器不支持
部分浏览器不支持ServiceWorker
4.5.3 如何配置
4.5.4 实际工作
4.5.5 正在缓存什么
4.5.6 如何关闭
如果不想使用 ServiceWorker,如何关闭呢
可以看到,已经没有小齿轮了
一般项目默认是打开的。打开以后比关闭的快一些,以之前一次性上传300张图片引发的思考 为例:
关闭以后,1个25kb,300个大约 7500 kb = 7.32M; 需要大概10s。
打开以后,同样300张图片,需要大概 8.73s
4.7 ServiceWorker和http2的疑惑
细心的可能注意到,。service worker 将2次请求,http2 降为了1,connnection id 变成了0
这是为什么呢?我们明明开启了http2。为什么会自动降为http1.1,就算是变成了http1.1, connectID 又为什么是0呢?
图片来源
http1.1 和http2 和 ServiceWorker相关推荐
- HTTP1.0、HTTP1.1和HTTP2.0的区别
HTTP1.0.HTTP1.1和HTTP2.0的区别 文章目录 HTTP1.0.HTTP1.1和HTTP2.0的区别 一.HTTP的历史 二.HTTP的基本优化 三.HTTP1.0和HTTP1.1的区 ...
- HTTP1.0 、 HTTP1.1、HTTP2.0的主要区别
HTTP1.0 VS HTTP1.1 长连接: HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接(PersistentConnection) ...
- HTTP1.0和HTTP2.0的区别,以及HTTP和HTTPS的区别
一.HTTP1.0和HTTP2.0的区别 总的区别就是: HTTP/2采用二进制格式而非文本格式 HTTP/2是完全多路复用的,而非有序并阻塞的--只需一个连接即可实现并行 使用报头压缩,HTTP/2 ...
- Http和Https的区别、http1.0、http1.1、http2.0
一.HTTP/HTTPS HTTP(HyperText Transfer Protocol:超文本传输协议),HTTPS(Hypertext Transfer Protocol Secure:超文本传 ...
- 谈谈HTTP1.0,HTTP1.1和HTTP2.0区别
>>>点击获取更多文章<<< HTTP定义 HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏 ...
- HTTP1.0、HTTP1.1和HTTP2.0
特性 HTTP1.0 HTTP1.1 HTTP2.0 持续连接 ✗ ✔ ✔ 断点续传 ✗ ✔ ✔ Host 头 ✗ ✔ ✔ 请求方法 GET.HEAD.POST 以上+ OPTIONS.PUT.DEL ...
- http1,http1.1,http2及http3
http1的问题: 1.浏览器阻塞,浏览器对于同一个域名同时请求个数是有限制,根据浏览器内核不同,限制请求个数是不一,但基本是个位数,超过请求个数就会阻塞,必须等前面的请求完成 2.DNS查询,域名解 ...
- Http1.0 , SPDY , Http2.0
一,基于Http的协议 在建立 HTTP 标准规范时,制订者主要想把 HTTP 当作传输 HTML 文 档的协议.随着时代的发展,Web 的用途更具多样性,比如演化成在 线购物网站.SNS(Socia ...
- HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解
目录 HTTP协议 基础知识 Http版本 Http1.0 Http1.1 Http2.0 Http3.0 总结 HTTP协议 基础知识 HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到 ...
最新文章
- mono+jexus 部署之CompilationException
- python的setting怎么找_python-DJANGO_SETTINGS_MODULE如何配置
- ACM入门之【差分】
- php中数组的数组元素最多出现2次,出现3次了就把第三次的数组元素去掉
- 20145236《信息安全系统设计基础》第0周学习总结
- MyBatis(三)
- python-玉米(小米)商城作业
- WORD样式保存为主题集?
- Turbo码:3GPP TS 36.212
- linux虚拟机安装samba服务,在虚拟机Redhat Linux下安装Samba服务器分享
- 风景怡人一个生态村子 -国稻种芯-百色:华润谋定希望小镇
- 软件测试的目的、原则及流程
- 如何找到外文文献对应的中文文献?
- P2627 [USACO11OPEN]Mowing the Lawn G(单调队列优化dp)
- Linux可以打开cdr文件吗,CDR是什么格式
- D3 二维图表的绘制系列(十七)树图
- 步进电机调速,S曲线调速算法你会吗?
- linux系统python截图不显示中文_Linux系统通过python访问SQL SERVER,无法显示数据库内中文的问题...
- linux 共享内存 出错,共享内存的std :: string给出了分段错误(linux)
- ubuntu trash