在浏览器同域名并发请求都产生并发数限制,并发限制通常是4~8以内。那么我们将来了解浏览器请求并发限制的原因和优化手段。

浏览器并发数量统计

浏览器为什么要请求并发数限制?

在了解优化手段之前我们先了解浏览器限制并发请求的原因

1.对操作系统端口资源考虑

PC总端口数为65536,那么一个TCP(http也是tcp)链接就占用一个端口。操作系统通常会对总端口一半开放对外请求,以防端口数量不被迅速消耗殆尽。

2.过多并发导致频繁切换产生性能问题

一个线程对应处理一个http请求,那么如果并发数量巨大的话会导致线程频繁切换。而线程的上下文切换有时候并不是轻量级的资源。这导致得不偿失,所以请求控制器里面会产生一个链接池,以复用之前的链接。所以我们可以看作同域名下链接池最大为4~8个,如果链接池全部被使用会阻塞后面请求任务,等待有空闲链接时执行后续任务。

3.避免同一客服端并发大量请求超过服务端的并发阈值

在服务端通常都对同一个客户端来源设置并发阀值避免恶意攻击,如果浏览器不对同一域名做并发限制可能会导致超过服务端的并发阀值被BAN掉。

4.客户端良知机制

为了防止两个应用抢占资源时候导致强势一方无限制的获取资源导致弱势一方永远阻塞状态。

优化手段

那么我们知道了浏览器并发限制的原因我们可以从下面几方面入手优化

域名散发

将请求通过多个域名分开请求,比如 100A请求 -> (25A + 25B + 25C + 25D)。但是建议4个左右。因为过多域名会导致dns解析性能问题。

cookie free

cookie free其实是区分主站点请求与其他次要请求的cookie存储和携带。当网站的cookie大小5kb,发送150个请求全部携带上cookie就是750kb,在1024 Kbps的常见上行带宽下,需要长达7.5秒左右才能全部发送完毕。尽管这些请求可能存在并发执行,但是在静态资源请求上几乎没必要携带cookie信息。所以我们可以启用主站点域名和其他域名进行请求区分cookie的携带。

小图片合并成大图(雪碧图)

把多张小图片合并成一张大图,通过css的background背景精灵定位显示。减少图片资源的请求数量,雪碧图就是常见的一种手段

设置Cache-Control max-age

当我们确定项目那些资源是长久不变化的我们对其设置版本号控制和Cache-Control max-age 进行长时间缓存,减少浏览器对资源重新请求。

loading Image 懒加载

懒加载其实是大型网站通常必备对一个手段,为了防止无意义加载场景。通常用户在进来对第一屏对内容不会全部查看,可能在浏览过程中已经跳转到其他页面。那么在用户浏览到的地方没必要进行图片加载、节点创建等操作,可以等用户滚动到节点内容区域再进行显示和加载内容。

PWA(渐进式应用)

近几年比较火的一个优化手段,通过web Service 对当前应用请求过的请求进行缓存到客户端,用户下次访问页面或刷新页面都是直接从客户端本机直接读取之前的response。可以细化控制缓存静态资源、api请求等。但是pwa缓存有限制条件:只能缓存https协议、主站点域名的请求。并且之前缓存过的请求需要在下次PWA机制启动时候进行清除和刷新,这样会导致缓存的资源需要两次访问页面才能发生更新。

前端性能优化篇——浏览器http同域名并发请求对限制相关推荐

  1. 前端性能优化篇——浏览器同域名并发请求对限制

    在浏览器同域名并发请求都产生并发数限制,并发限制通常是4-8以内,那么来了解浏览器请求并发限制的原因和优化手段. 浏览器并发数量统计 浏览器为什么要请求并发数限制? 在了解优化手段之前我们先了解浏览器 ...

  2. 【前端性能优化】浏览器渲染原理与性能优化

    目录 1. 浏览器渲染基本步骤 2. 构建DOM树.CSSOM树 3. 构建渲染树 4. 计算渲染树的布局 5. 将布局渲染到屏幕上 6. 渲染优化 1. 浏览器渲染基本步骤 浏览器主要有以下步骤: ...

  3. 前端性能优化之——浏览器http请求并发

    一.什么是http请求并发 随着现在的网页设计的越来越炫酷,功能越来复杂.伴随着的是网页加载的资源越来越多,常常一个页面加载的CSS.JS.图片.接口等超过几十上百个. 但其实,在客户端,浏览器并不一 ...

  4. 前端性能优化--合并压缩js,减少http请求次数

    在我之前写的性能优化中,推荐大家使用雪碧图,压缩图片大小是一个方面,还有一个比较重要的方面就是,将图片放到一起了,降低了http的请求次数.今天这里我主要介绍大家在网站发布的时候,可以利用一些在线的合 ...

  5. 前端性能优化之浏览器渲染原理和关键渲染路径、复合线程、图层及优化、JS 开销及优化和 HTML 和 CSS 优化

    一.浏览器渲染原理和关键渲染路径 浏览器构建渲染树,DOM 树和 CSSDOM 树合成为 Render Tree 渲染树. 浏览器的渲染流程,如下所示: JavaScript -> Style ...

  6. 前端性能优化篇——DNS/CDN

    DNS解析 TCP/IP四层协议:应用层.传输层.网络层(网络互联层).链路层(网络接口层). DNS(Domain Name System,域名系统)和FTP(FIile Transfer Prot ...

  7. speeding up your web site 前端性能优化规则(一)

    接上一篇:speeding up your web site 前端性能优化 -------------------------------------------------------------- ...

  8. Web前端性能优化,应该怎么做?

    本文将分享一些前端性能优化的常用手段,包括减少请求次数.减小资源大小.各种缓存.预处理和长连接机制,以及代码方面的性能优化等方面. base64:尤其是在移动端,小图标可以base64(webpack ...

  9. 前端性能优化之——CDN优化加载

    CDN优化加载 前言 一.查找资源 二.资源引入 三.添加配置 vue3配置 vue2配置 四.去掉原有的引用 拓展1:vue3.0和vue2.0的cdn包名称不一样 拓展2:element-ui 不 ...

最新文章

  1. cygwin编译verilator_Sublime text3 + Verilator 实现自动语法检错
  2. boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
  3. leetcode-最大子序和(动态规划讲解)
  4. android多屏应用程序,微软也尝试“多屏协同” Windows系统可以运行安卓程序
  5. 解析邻居的耳朵音乐地址(单页下载)
  6. Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性...
  7. Winform GDI+ 绘图
  8. pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
  9. Redis和MySQL的结合方案
  10. JAVA MIDP_Java MIDP2.1和JAVA MIDP2.0的本质区别是什么啊?
  11. mybatis中useGeneratedKeys和keyProperty的作用
  12. 当使用 position 属性时,请始终设置 !DOCTYPE 声明:当使用 float 属性时,请始终设置 !DOCTYPE 声明:
  13. WPF中,输入完密码回车提交 ,回车触发按钮点击事件
  14. ADAS技术市场总结展望(2021年-2022年)
  15. UE4蓝图基础01-开发环境安装
  16. ESXi6.7修改静态ip地址
  17. IDEA官网以往版本下载
  18. 2022最好用压缩软件推荐,这三款就够了
  19. java指定路径不存在_Java在指定路径上创建文件提示不存在解决方法
  20. Windows快速访问无法取消固定

热门文章

  1. oracle查询慢怎么优化,Oracle查询优化-怎样建立索引优化下面的查询语句啊
  2. python getopt参数参数自动补全_如何在Python中使用getopt / OPTARG?如果给出过多的参数(9),如何转移参数?...
  3. python asyncio tcp server_asyncio异步IO——Streams详解
  4. php explode 循环,PHP explode 切割字串 快速取得最後一個值
  5. 360浏览器怎么查看保存的密码
  6. java中字典算法_Java字典生成算法讲解
  7. Redis缓存那点破事 , 绝杀面试官 25 问
  8. Spring Boot配置MinIO(实现文件上传、下载、删除)
  9. java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
  10. Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?