精华内容
下载资源
问答
  • 浏览器允许的并发请求资源数是什么意思? 摘自:https://www.zhihu.com/question/20474326 IE 6\7\8\9 以及chrome ,firefox 这些浏览器,允许的并发请求资源数是什么情况?以前觉得好像IE...

    摘自:https://www.zhihu.com/question/20474326

     

    IE 6\7\8\9 以及chrome ,firefox 这些浏览器,允许的并发请求资源数是什么情况?以前觉得好像IE 6是2个并发,求助知乎,想得到更详细更正确的答案。这样有助于理解前端性能上的一些问题。
    关注者
    456
     
    被浏览
    40827
     

    4 个回答

    默认排序

     

    的答案分别从前后端答复了。我再补充和整理一下吧。
    这个问题实际上涉及非常多的考虑和因此而发生的优化技术:
    首先,是基于端口数量和线程切换开销的考虑,浏览器不可能无限量的并发请求,因此衍生出来了并发限制和HTTP/1.1的Keep alive。 所以,IE6/7在HTTP/1.1下的并发才2,但HTTP/1.0却是4。 而随着技术的发展,负载均衡和各类NoSQL的大量应用,基本已经足以应对C10K的问题。 但却并不是每个网站都懂得利用domain hash也就是多域名来加速访问。因此,新的浏览器加大了并发数的限制,但却仍控制在8以内。
    后端的保护
    已经说得很全面了,补充一小点就是浏览器即使放弃保护自己,将所有请求一起发给服务器,也很可能会引发服务器的并发阈值控制而被BAN,而另外一个控制在8以内的原因也是keep alive技术的存在使得浏览器复用现有连接和服务器通信比创建新连接的性能要更好一些。

     

    所以,浏览器的并发数其实并不仅仅只是良知的要求,而是双方都需要保护自己的默契,并在可靠的情况下提供更好的性能。

    稍微跑跑题据说有益身心健康。
    =================== 我是健康的分割线 ========================
    前端技术的逐渐成熟,还衍生了domain hash, cookie free, css sprites, js/css combine, max expires time, loading images on demand等等技术。这些技术的出现和大量使用都和并发资源数有关。

    1. 按照普通设计,当网站cookie信息有1 KB、网站首页共150个资源时,用户在请求过程中需要发送150 KB的cookie信息,在512 Kbps的常见上行带宽下,需要长达3秒左右才能全部发送完毕。 尽管这个过程可以和页面下载不同资源的时间并发,但毕竟对速度造成了影响。 而且这些信息在js/css/images/flash等静态资源上,几乎是没有任何必要的。 解决方案是启用和主站不同的域名来放置静态资源,也就是cookie free。
    2. 将css放置在页面最上方应该是很自然的习惯,但第一个css内引入的图片下载是有可能堵塞后续的其他js的下载的。而在目前普遍过百的整页请求数的前提下,浏览器提供的仅仅数个并发,对于进行了良好优化甚至是前面有CDN的系统而言,是极大的性能瓶颈。 这也就衍生了domain hash技术来使用多个域名加大并发量(因为浏览器是基于domain的并发控制,而不是page),不过过多的散布会导致DNS解析上付出额外的代价,所以一般也是控制在2-4之间。 这里常见的一个性能小坑是没有机制去确保URL的哈希一致性(即同一个静态资源应该被哈希到同一个域名下),而导致资源被多次下载。
    3. 再怎么提速,页面上过百的总资源数也仍然是很可观的,如果能将其中一些很多页面都用到的元素如常用元素如按钮、导航、Tab等的背景图,指示图标等等合并为一张大图,并利用css background的定位来使多个样式引用同一张图片,那也就可以大大的减少总请求数了,这就是css sprites的由来。
    4. 全站的js/css原本并不多,其合并技术的产生却是有着和图片不同的考虑。 由于cs/js通常可能对dom布局甚至是内容造成影响,在浏览器解析上,不连贯的载入是会造成多次重新渲染的。因此,在网站变大需要保持模块化来提高可维护性的前提下,js/css combine也就自然衍生了,同时也是minify、compress等对内容进行多余空格、空行、注释的整理和压缩的技术出现的原因。
    5. 随着cookie free和domain hash的引入,网站整体的打开速度将会大大的上一个台阶。 这时我们通常看到的问题是大量的请求由于全站公有header/footer/nav等关系,其对应文件早已在本地缓存里存在了,但为了确保这个内容没有发生修改,浏览器还是需要请求一次服务器,拿到一个304 Not Modified才能放心。 一些比较大型的网站在建立了比较规范的发布制度后,会将大部分静态资源的有效期设置为最长,也就是Cache-Control max-age为10年。 这样设置后,浏览器就再也不会在有缓存的前提下去确认文件是否有修改了。 超长的有效期可以让用户在访问曾访问过的网站或网页时,获得最佳的体验。 带来的复杂性则体现在每次对静态资源进行更新时,必须发布为不同的URL来确保用户重新加载变动的资源。
    6. 即使是这样做完,仍然还存在着一个很大的优化空间,那就是很多页面浏览量很大,但其实用户直接很大比例直接就跳走了,第一屏以下的内容用户根本就不感兴趣。 对于超大流量的网站如淘宝、新浪等,这个问题尤其重要。 这个时候一般是通过将图片的src标签设置为一个loading或空白的样式,在用户翻页将图片放入可见区或即将放入可见区时再去载入。 不过这个优化其实和并发资源数的关系就比较小了,只是对一些散布不合理,或第一页底部的资源会有一定的帮助。 主要意图还是降低带宽费用。
    总的来说,各类技术都是为了能让用户更快的看到页面进行下一步操作,但却不必将宝贵的资源浪费在没有必要的重复请求、不看的内容上。
    13112 条评论
    分享
    收藏感谢收起

    首先,请允许我精简了一下题目……
    其次,我的答案跑题了,请看讨论和

    的答案……

     

    浏览器的并发请求数目限制是针对同一域名的。
    意即,同一时间针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞,这就是为什么会有zhimg.com, 之类域名的原因。
    (这是其中一个原因,另一个主要原因是,向 请求资源会把 下本地的所有 cookie 发送过去,这是请求图片,js等资源不需要的,会造成很大的浪费,详情见

    如图,有的请求会持续很长时间,如果把 img, css, js... 都放到 一个域名下面,其他请求就迟迟无法完成,浏览者看来就是『卡住了』。而把图片放到 之后,css和图片就可以并发请求了。

    具体不同浏览器这个限制的数目

    图片来自

    以下文章中有更详细的说明:
    以及 stackoverflow 中的相关问题
    6014 条评论
    分享
    收藏感谢收起

    我想对

    的答案基于自己对 HTTP / TCP / IP 整个协议栈的理解做一点补充。

     

    罗列一下浏览器这么决定可能有什么考虑
    1. 由于 TCP 协议的限制,PC 端只有65536个端口可用以向外部发出连接,而操作系统对半开连接数也有限制以保护操作系统的 TCP\IP 协议栈资源不被迅速耗尽,因此浏览器不好发出太多的 TCP 连接,而是采取用完了之后再重复利用 TCP 连接或者干脆重新建立 TCP 连接的方法。
    2. 如果采用阻塞的套接字模型来建立连接,同时发出多个连接会导致浏览器不得不多开几个线程,而线程有时候算不得是轻量级资源,毕竟做一次上下文切换开销不小。
    3. 这是浏览器作为一个有良知的客户端在保护服务器。就像以太网的冲突检测机制,客户端在使用公共资源的时候必须要自行决定一个等待期。当超过2个客户端要使用公共资源时,强势的那个邪恶的客户端可能会导致弱势的客户端完全无法访问公共资源。从前迅雷被喷就是因为它不是一个有良知的客户端,它作为 HTTP 协议客户端没有考虑到服务器的压力,作为 BT 客户端没有考虑到自己回馈上传量的义务。


    另外关于
    的答案评论中提到的RFC-2616里面8.1.4 Practical Considerations。
    在46页:
    Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.
    的确是。贴个无关链接:
    补充:半开连接指的是 TCP 连接的一种状态,当客户端向服务器端发出一个 TCP 连接请求,在客户端还没收到服务器端的回应并发回一个确认的数据包时,这个 TCP 连接就是一个半开连接。
    若服务器到超时以后仍无响应,那么这个 TCP 连接就等于白费了,所以操作系统会本能的保护自己,限制 TCP 半开连接的总个数,以免有限的内核态内存空间被维护 TCP 连接所需的内存所浪费。
    172 条评论
    分享
    收藏感谢
    楼主知道谷歌,IE等限制200并发线程限制的解决方案么?毕竟开源的浏览器,查看了源码视乎没找到相关参数。

     

    posted on 2017-05-17 16:30 Alfa 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/wuyifu/p/6868209.html

    展开全文
  • j2ee的web项目,并发什么意思,举个例子。  并发即某一时刻(一个固定的时间,就在那个时间点)100个人同时访问系统,网站服务器即tomcat是否都能响应请求?服务器(即tomcat负责时间片的调度控制,让100个请求...

    j2ee的web项目,并发是什么意思,举个例子。

     并发即某一时刻(一个固定的时间,就在那个时间点)100个人同时访问系统,网站服务器即tomcat是否都能响应请求?服务器(即tomcat负责时间片的调度控制,让100个请求轮流执行,轮流占用服务器)肯定是将这100个分开时间执行的,因为某个时间点上只能有一个人访问上,即原理是cpu的时间片轮转,而外界是看不出来轮转的,因为可能0.0001毫秒就响应完毕一个请求,100个请求0.01毫秒就处理完毕了,就跟大家都独立占有cpu似的

     当并发数到1000000即100万时,延迟就会看出来了,因为处理100万个需要耗时100毫秒,也就是0.1秒,1亿个请求并发,就要等待10秒,并发越多,等待时间以此类推越长,这就是并发,很明了了。

     在一个时间点,只能有一个请求占用tomcat,即只有一个请求执行代码,这也是为什么,多个用户同时访问某一段代码,代码中要获取当前登录用户,只会得到一个用户,而不是多个。因为某个时间点,只能有一个请求访问tomcat即这段代码



    展开全文
  • 页面加载多个并发请求卡主

    千次阅读 2018-04-13 20:12:13
    一开始以为是ajax的原因,通过调试发现,后台同时接收到了6个请求,即其它请求还没有传到后台,这才确定是浏览器限制了并发请求的...以下为相关资料: 浏览器允许的并发请求资源数是什么意思? Why do big sites h...

        最近遇到一个问题,页面通过ajax异步访问多个web请求卡住,页面上按钮点击都没有反应。一开始以为是ajax的原因,通过调试发现,后台同时接收到了6个请求,即其它请求还没有传到后台,这才确定是浏览器限制了并发请求的个数。

       解决方案:资源放在不同的域下面。


    以下为相关资料:

               浏览器允许的并发请求资源数是什么意思?

               Why do big sites host their images/css on external domains?

                   

    展开全文
  • ip需要使用到高并发的通常都是网络爬虫采集获取数据信息时会用到,那么代理ip中的高并发什么意思呢?一般我们在爬虫工作中,或者一些网站的软网上都是看到关于爬虫中提到的高频率请求并发等字眼,请求就是新建的...

    在这里插入图片描述

    ip需要使用到高并发的通常都是网络爬虫采集获取数据信息时会用到,那么代理ip中的高并发时什么意思呢?一般我们在爬虫工作中,或者一些网站的软网上都是看到关于爬虫中提到的高频率请求并发等字眼,请求就是新建的请求数,如果是每秒新建请求,就是每一秒可以新发出多少条HTTP请求。

    而高并发是指每秒的并非数,也就是指每秒可同时使用的HTTP链接,如每秒新建10条请求,代理ip的存活有效时间是3分钟,也就是180秒。如果代理ip第一秒发出去10条新的请求,那么同时也就是10个并发了,如果第二秒又增加了10条,那么同时也会增加10条并非。

    如果第一秒的请求数没有关闭,那么第二秒总共就有20条并发,以此计算,代理ip存活时长180秒有多少条并发,就是10条请求最高是支持10条并发,也就是10/秒*180/ip存活时间=1800条并发。

    展开全文
  • SingleFlight是Go语言sync扩展库提供的另一种并发原语,那么SingleFlight是用于解决什么问题的呢?官方文档里的解释是:Package singleflight provides a duplicate function call suppression mech...
  • 最大并发连接数是IIS可以同时最多处理多少个连接请求。 队列长度任是指何给定时间可在队列中等待的应用程序池请求的最大数量。如果达到此限制,则所有新请求都将被拒绝,而且用户将收到错误消息“503 – 服务不可用...
  • SingleFlight是Go语言sync扩展库提供的另一种并发原语,那么SingleFlight是用于解决什么问题的呢?官方文档里的解释是: Package singleflight provides a duplicate function call suppression mechanism. ...
  • 1. 响应时间(RT)响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能...
  • 异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。 同步和异步最大的区别就在于:一个需要等待,一个不需要等待。 比如广播,就是一个异步例子。...
  • 意思是人的诚心所到,能感动天地,使金石为之开裂。比喻只要专心诚意去做,什么疑难问题都能解决。 锁顺序死锁 两个线程试图通过不同的顺序获取多个相同的锁。如果请求的顺序不相同,那么会出现循环的锁依赖现象...
  •     相关:浏览器允许的并发请求资源数是什么意思? chrome的timeline中stalled问题解析
  • 架构是很多的,主要区别是哪个公司出的,用什么指令集,适合不同的应用场景,比如...ibm的power架构和oracle-sun的sparc架构,risc指令集,适合有巨大并行计算需求或者并发请求的应用。 ARM架构(过去称作进阶精简指
  • 前言原创公众号:bigsai对于缓存穿透、...每次请求落在数据库、并且高并发。数据库扛不住会挂掉。解决方案可以将查到的null设成该key的缓存对象。当然,也可以根据明显错误的key在逻辑层就就行验证。同时,你也可以...
  • 每次请求落在数据库、并且高并发。数据库扛不住会挂掉。解决方案可以将查到的null设成该key的缓存对象。当然,也可以根据明显错误的key在逻辑层就就行验证。同时,你也可以分析用户行为,是否为...
  • 并发之nginx限制

    2019-10-01 19:19:28
    请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。 我们会通过一些简单的示例展示Nginx限速限流模块是如何工作的,然后结合代码讲解其背后的算法和原理...
  • Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。我们会通过一些简单的示例展...
  • 1、什么并发: https://blog.csdn.net/qq_33290787/article/details/51790605 讲并发之前,要先看一张图: Concurrency,是并发意思并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序(或线程)...
  • 字面意思,承担缓存作用的服务按集群方式进行部署。一般来说,我们的数据是存储在数据库的,当用户访问服务时,用户通过后端请求数据库数据,最害怕的就是出现热Key、大Value情况。 所谓热Key就是某个值瞬间被...
  • 请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。我们会通过一些简单的示例展示Nginx限速限流模块是如何工作的,然后结合代码讲解其背后的算法和原理。...
  • 1. “同步”和“异步”是什么意思?Web 应用程序通常要处理许多请求,这些请求在很短的时间段内来自不同的客户端。为避免处理延迟,必须考虑并行处理多个请求,这通常称为“并发”。在本文中,我将继续使用 Web 应用...
  • 请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。我们会通过一些简单的示例展示Nginx限速限流模块是如何工作的,然后结合代码讲解其背后的算法和原理。...
  • 什么是Netty? Netty是一款受大公司青睐的java开源网络编程框架...BIO和NIO分别是什么意思? BIO(Blocking I/O),阻塞IO,资源不可用时,IO请求一直阻塞,阻塞导致处理网络I/O时,一个线程只能处理一个网络连接。 ...
  • Semaphore 是什么? Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。Semaphore 基本能完成 ReentrantLock 的所有工作,使用方法也与之类似,Semaphore 也实现了可轮询的锁请求与定时锁的...
  • 请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。我们会通过一些简单的示例展示Nginx限速限流模块是如何工作的,然后结合代码讲解其背后的算法和原理。...
  • 这个《我想进大厂》系列的最后一篇,终结篇。可能有点标题党了,但是我想要表达的意思和目的是一致的。这是一道很常见的面试题,但是大多数人并...高并发系统都有什么特点?... ...诸如此类,问法很多,但是面试这种...
  • Linux测试题

    2017-07-07 15:07:18
    题目1、Linux挂载Winodws共享文件夹2、查看http的并发请求数及其TCP连接状态:3、用tcpdump嗅探80端口的访问看看谁最高4、统计/var/log/下文件个数5、查看当前系统每IP连接数6、shell下32位随机密码生成7、统计出...

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

并发请求什么意思