之前写的一篇水文,一次性上传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相关推荐

  1. HTTP1.0、HTTP1.1和HTTP2.0的区别

    HTTP1.0.HTTP1.1和HTTP2.0的区别 文章目录 HTTP1.0.HTTP1.1和HTTP2.0的区别 一.HTTP的历史 二.HTTP的基本优化 三.HTTP1.0和HTTP1.1的区 ...

  2. HTTP1.0 、 HTTP1.1、HTTP2.0的主要区别

    HTTP1.0 VS HTTP1.1 长连接: HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接(PersistentConnection) ...

  3. HTTP1.0和HTTP2.0的区别,以及HTTP和HTTPS的区别

    一.HTTP1.0和HTTP2.0的区别 总的区别就是: HTTP/2采用二进制格式而非文本格式 HTTP/2是完全多路复用的,而非有序并阻塞的--只需一个连接即可实现并行 使用报头压缩,HTTP/2 ...

  4. Http和Https的区别、http1.0、http1.1、http2.0

    一.HTTP/HTTPS HTTP(HyperText Transfer Protocol:超文本传输协议),HTTPS(Hypertext Transfer Protocol Secure:超文本传 ...

  5. 谈谈HTTP1.0,HTTP1.1和HTTP2.0区别

    >>>点击获取更多文章<<< HTTP定义 HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏 ...

  6. HTTP1.0、HTTP1.1和HTTP2.0

    特性 HTTP1.0 HTTP1.1 HTTP2.0 持续连接 ✗ ✔ ✔ 断点续传 ✗ ✔ ✔ Host 头 ✗ ✔ ✔ 请求方法 GET.HEAD.POST 以上+ OPTIONS.PUT.DEL ...

  7. http1,http1.1,http2及http3

    http1的问题: 1.浏览器阻塞,浏览器对于同一个域名同时请求个数是有限制,根据浏览器内核不同,限制请求个数是不一,但基本是个位数,超过请求个数就会阻塞,必须等前面的请求完成 2.DNS查询,域名解 ...

  8. Http1.0 , SPDY , Http2.0

    一,基于Http的协议 在建立 HTTP 标准规范时,制订者主要想把 HTTP 当作传输 HTML 文 档的协议.随着时代的发展,Web 的用途更具多样性,比如演化成在 线购物网站.SNS(Socia ...

  9. HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解

    目录 HTTP协议 基础知识 Http版本 Http1.0 Http1.1 Http2.0 Http3.0 总结 HTTP协议 基础知识 HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到 ...

最新文章

  1. mono+jexus 部署之CompilationException
  2. python的setting怎么找_python-DJANGO_SETTINGS_MODULE如何配置
  3. ACM入门之【差分】
  4. php中数组的数组元素最多出现2次,出现3次了就把第三次的数组元素去掉
  5. 20145236《信息安全系统设计基础》第0周学习总结
  6. MyBatis(三)
  7. python-玉米(小米)商城作业
  8. WORD样式保存为主题集?
  9. Turbo码:3GPP TS 36.212
  10. linux虚拟机安装samba服务,在虚拟机Redhat Linux下安装Samba服务器分享
  11. 风景怡人一个生态村子 -国稻种芯-百色:华润谋定希望小镇
  12. 软件测试的目的、原则及流程
  13. 如何找到外文文献对应的中文文献?
  14. P2627 [USACO11OPEN]Mowing the Lawn G(单调队列优化dp)
  15. Linux可以打开cdr文件吗,CDR是什么格式
  16. D3 二维图表的绘制系列(十七)树图
  17. 步进电机调速,S曲线调速算法你会吗?
  18. linux系统python截图不显示中文_Linux系统通过python访问SQL SERVER,无法显示数据库内中文的问题...
  19. linux 共享内存 出错,共享内存的std :: string给出了分段错误(linux)
  20. ubuntu trash

热门文章

  1. 计算机专业的可以做资料员工作吗,建筑资料员好不好做?
  2. 董小姐:人生六十四,事业一道坎
  3. 【配送路径规划】基于matlab蚁群优化节约算法单中心多城市配送车辆路径规划【含Matlab源码 017期】
  4. aria2c下载磁力链接
  5. 先进制造业的中国之路
  6. 动画:唐三藏西行之网络原理通信全过程
  7. java 美团 订单推送,记一次美团外卖推送报文丢失
  8. 传智播客 崔希凡JavaWeb培训视频day19 客户管理系统原型
  9. 【科普一下】量子力学史上的四次大论战
  10. 局域网内远程控制访问共享文件