美文网首页
浏览器允许的并发请求资源数限制

浏览器允许的并发请求资源数限制

作者: EdmundChen | 来源:发表于2018-10-03 12:02 被阅读62次

C10K问题: 网络服务在处理数以 万计的客户端 连接时,往往出现效率底下甚至完全瘫痪,这被成为 C10K问题 。

这个问题涉及非常多的考虑,也因此而发生优化技术。

  1. 基于端口数量和线程切换开销的考虑,浏览器不可能无限量的并发请求
  2. HTTP并发请求有限制,因此浏览器加大了并发数的限制,但却仍控制在8以内(同域名限制), 8以内的原因也是keep alive技术的存在使得浏览器复用现有连接和服务器通信比创建新连接的性能要更好一些。

domain hash,
cookie free,
css sprites,
js/css combine,
max expires time,
loading images on demand。这些技术大量使用都和并发资源数有关。

cookie free

按照普通设计,当网站cookie信息有1 KB、网站首页共150个资源时,用户在请求过程中需要发送150 KB的cookie信息,在512 Kbps的常见上行带宽下,需要长达3秒左右才能全部发送完毕。 尽管这个过程可以和页面下载不同资源的时间并发,但毕竟对速度造成了影响。 而且这些信息在js/css/images/flash等静态资源上,几乎是没有任何必要的。 解决方案是启用和主站不同的域名来放置静态资源,也就是cookie free

domain hash

将css放置在页面最上方应该是很自然的习惯,但第一个css内引入的图片下载是有可能堵塞后续的其他js的下载的。而在目前普遍过百的整页请求数的前提下,浏览器提供的仅仅数个并发,对于进行了良好优化甚至是前面有CDN的系统而言,是极大的性能瓶颈。 这也就衍生了domain hash技术来使用多个域名加大并发量(因为浏览器是基于domain的并发控制,而不是page),不过过多的散布会导致DNS解析上付出额外的代价,所以一般也是控制在 2-4 之间。 这里常见的一个性能小坑是没有机制去确保URL的哈希一致性(即同一个静态资源应该被哈希到同一个域名下),而导致资源被多次下载。

css sprites

再怎么提速,页面上过百的总资源数也仍然是很多的,如果能将其中一些很多页面都用到的元素如常用元素如按钮、导航、Tab等的背景图,指示图标等等合并为一张大图,并利用css background的定位来使多个样式引用同一张图片,那也就可以大大的减少总请求数了,这就是css sprites

js/css combine

由于cs/js通常可能对dom布局甚至是内容造成影响,在浏览器解析上,不连贯的载入是会造成多次重新渲染的。因此,在网站变大需要保持模块化来提高可维护性的前提下,js/css combine也就自然衍生了,同时也是minify、compress等对内容进行多余空格、空行、注释的整理和压缩的技术出现的原因。

Cache

随着cookie free和domain hash的引入,网站整体的打开速度将会大大的上一个台阶。 这时我们通常看到的问题是大量的请求由于全站公有header/footer/nav等关系,其对应文件早已在本地缓存里存在了,但为了确保这个内容没有发生修改,浏览器还是需要请求一次服务器,拿到一个304 Not Modified才能放心。 一些比较大型的网站在建立了比较规范的发布制度后,会将大部分静态资源的有效期设置为最长,也就是Cache-Control max-age为10年。 这样设置后,浏览器就再也不会在有缓存的前提下去确认文件是否有修改了。 超长的有效期可以让用户在访问曾访问过的网站或网页时,获得最佳的体验。 带来的复杂性则体现在每次对静态资源进行更新时,必须发布为不同的URL来确保用户重新加载变动的资源。

`loading images on demand

即使是这样做完,仍然还存在着一个很大的优化空间,那就是很多页面浏览量很大,但其实用户直接很大比例直接就跳走了,第一屏以下的内容用户根本就不感兴趣。 这个时候一般是通过将图片的src标签设置为一个loading或空白的样式,在用户翻页将图片放入可见区或即将放入可见区时再去载入。 不过这个优化其实和并发资源数的关系就比较小了,只是对一些散布不合理,或第一页底部的资源会有一定的帮助。 主要意图还是降低带宽费用

参考: https://www.zhihu.com/question/20474326/answer/15696641

相关文章

  • 浏览器允许的并发请求资源数限制

    C10K问题: 网络服务在处理数以 万计的客户端 连接时,往往出现效率底下甚至完全瘫痪,这被成为 C10K问题 。...

  • 【前端性能】浅谈域名发散与域名收敛

    浏览器的并发限制: 浏览器对于同一域名下允许的并发请求数作了限制,通常同一域名下最大并发请求数为6个; 原因: 1...

  • 利用多域名存放静态资源提速

    并发限制数限制 针对同域名浏览器有并发限制 节省传输 对于同域名下获取静态资源浏览器会带上cookie,可以配置额...

  • 浏览器允许的并发请求资源数

    浏览器的并发请求数目限制是针对同一域名的。即,同一时间针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞。

  • Web45.HTTP

    web本质 用户请求远程资源 浏览器查找远程资源,打包用户请求并发送 服务器根据用户请求的资源路径及附带参数,配合...

  • 从URL输入到页面展现

    一、web流程 用户请求资源 浏览器打包用户请求并发送 服务器根据资源路径及参数,产生响应发回给浏览器 浏览器解析...

  • 从URL到页面呈现发生了什么?

    web本质是什么呢? 用户请求远程资源 浏览器查找远程资源,打包用户请求并发送 服务器根据用户请求的资源路径及附带...

  • Sentinel限流熔断

    服务限流的作用及实现限流的主要目的是通过限制并发数访问或者限制同一个时间窗口允许处理的请求数量来保护系统。提供稳定...

  • 跨域请求解决办法

    CORS:即跨域资源共享,它允许浏览器向跨域服务器发送ajax请求 与JSONP的区别:jsonp是绕过了同源限制...

  • Axios请求并发限制

    标签 NodeJS并发请求,并行请求,QPS限制,Axios并发限制,Axios并发请求 背景 由于调用第三方服务...

网友评论

      本文标题:浏览器允许的并发请求资源数限制

      本文链接:https://www.haomeiwen.com/subject/anyzoftx.html