浏览器对同一域名的并发请求有并发请求数限制。并发限制一般在4到8之间,下面就来了解一下浏览器请求并发限制的原因和优化手段。浏览器并发统计为什么浏览器请求并发数有限制?在了解优化方法之前,先了解一下浏览器限制并发请求的原因1、考虑到操作系统端口资源的PC端口总数为65536,那么一个TCP(http也是tcp)连接占用一个端口。操作系统通常会将全部端口的一半开放给外部请求,以防止端口数量很快耗尽。2.并发过多导致频繁切换和性能问题。一个线程对应处理一个http请求,如果并发量很大,会导致线程频繁切换。而且线程上下文切换有时也不是轻量级的资源。这样得不偿失,所以会在requestcontroller中生成一个连接池来复用之前的连接。因此,我们可以看到同一个域名下的连接池最大数量是4到8个,如果所有的连接池都用完了,后面的请求任务就会被阻塞,等有空闲连接的时候再执行后续的任务。3、避免同一客户端的大量并发请求超过服务端的并发阈值。服务器通常会为同一个客户端源设置一个并发阈值,以避免恶意攻击。如果浏览器没有限制同域名的并发数,可能会导致超过服务器的并发阈值。该值被BAN丢弃。4、客户端良心机制,防止强方在两个应用抢占资源时无限制获取资源,导致弱方永久阻塞。优化方法那么我们知道了浏览器并发限制的原因,我们可以从以下几个方面入手,优化域名的分配,通过多个域名来划分请求,比如100A请求->(25A+25B+25C+25D)。但建议在4左右。因为域名过多会导致dns解析性能问题。cookiefreecookiefree其实就是区分主站请求和其他次要请求的cookie存储和携带。当网站的cookie大小为5kb时,发送150个带有所有cookie的请求是750kb。在常见的1024Kbps的上行带宽下,发送完所有的请求大约需要7.5秒。虽然这些请求可能会并发执行,但是静态资源请求几乎不需要携带cookie信息。所以我们可以让主站域名和其他域名发出请求来区分cookies的携带。Combinsmallpicturesintoabigpicture(Spritepicture)将多张小图合并成一张大图,通过css的背景sprite显示。为了减少对图片资源的请求次数,精灵图片是设置Cache-Controlmax-age的常用手段。当我们确定项目的资源在很长一段时间内不会发生变化时,我们就将版本号控制和Cache-Controlmax-age设置了很长时间。缓存减少了浏览器对资源的重新请求。loadingImage懒加载懒加载其实是大型网站必备的方法,为了防止无意义的加载场景。通常用户在进来的时候并不会看到第一屏的所有内容,在浏览过程中可能已经跳转到了其他页面。那么就不需要在用户浏览的地方进行图片加载、节点创建等操作。您可以等待用户滚动到节点内容区域,然后再显示和加载内容。PWA(progressiveapplication)是近年来流行的一种优化方法。当前应用请求的请求通过web服务缓存到客户端。下次用户访问页面或刷新页面时,直接从客户端读取。获取上一个响应。可以微调对缓存静态资源、API请求等的控制。但是pwa缓存有限制:只能缓存https协议和主站域名的请求。而之前缓存的请求需要在下次PWA机制启动的时候清空刷新,这样就会导致缓存的资源需要访问页面两次才能更新。
