【发布时间】:2009-05-29 13:13:41
【问题描述】:
两个相关问题:
网页允许打开的最大并发文件数是多少(例如,图像、css 文件等)?我假设这个值在不同的浏览器中是不同的(可能是每个文件类型)。例如,我很确定 javascript 文件一次只能加载一个(对吗?)。
有没有办法可以使用 javascript 来查询这些信息?
【问题讨论】:
标签: javascript
两个相关问题:
网页允许打开的最大并发文件数是多少(例如,图像、css 文件等)?我假设这个值在不同的浏览器中是不同的(可能是每个文件类型)。例如,我很确定 javascript 文件一次只能加载一个(对吗?)。
有没有办法可以使用 javascript 来查询这些信息?
【问题讨论】:
标签: javascript
对于 Internet Explorer,请参阅 this MSDN article。基本上,除非用户已编辑注册表或运行“互联网加速”程序,否则如果使用 IE7 或更早版本,他们将最多有两个连接。 IE8 尝试对其进行优化,并且可以创建多达 6 个并发连接,具体取决于服务器和 Internet 连接的类型。在 JavaScript 中,在 IE8 上,您可以查询属性 window.maxConnectionsPerServer。
对于 Firefox,FF2 及更早版本的默认值为 2,FF3 的默认值为 6。见Mozilla documentation。无论如何我都不知道要从 FF 中的 JavaScript 中检索此值。
除了禁止 IP 之外,大多数 HTTP 服务器几乎没有能力限制来自单个主机的连接数。一般来说,这不是一个好主意,因为许多用户都在代理或 NAT 路由器后面,这将允许来自同一个 IP 地址的多个连接。
在客户端,您可以通过从多个域请求资源来人为地增加此数量。您可以设置 www1、www2 等。别名都指向您的同一个 Web 服务器。然后混合从哪里提取静态内容。由于额外的 DNS 解析,这将在第一次产生少量开销。
【讨论】:
绕过每个服务器的 X 连接限制的一种有趣方法是将脚本和图像等静态资源映射到它们自己的域...img.foo.com 或 js.foo.com。
我只阅读过这方面的信息 - 没有实际尝试或测试过。所以如果这不起作用,请告诉我。
【讨论】:
限制通常是网络服务器。 Web 服务器通常只允许每个用户同时下载两次。
像 ASP.NET 这样的活动脚本引擎每个用户一次只执行一个请求。脚本引擎不会处理对静态文件的请求,因此您仍然可以在获取 aspx 文件时获取例如图像。
页面通常包含来自不同服务器的内容,例如流量测量脚本等。由于下载限制是每台服务器的,您通常可以从每台服务器一次下载两个文件。
由于这是服务器限制,您无法使用 javascript 找到任何相关信息。
【讨论】:
【讨论】:
我知道至少在 Firefox 中,这个值是可配置的(network.http.max-connections、network.http.max-connections-per-server 和 network.http.pipelining.maxrequests),所以我怀疑你会得到一个明确的答案。但是,默认值为 4。
你想完成什么?
【讨论】:
HTTP 中没有限制会话数的内容。
不过,FF 中有一个配置项,专门设置了总会话数以及允许到单个服务器的会话数。其他浏览器可能也有这个功能。
此外,服务器可以限制总共有多少会话来自每个客户端 IP 地址。
所以正确答案是:
1/ 会话数被限制为客户端(浏览器)和服务器强加的最小值。
2/ 因此,在 JavaScript 中没有可靠的方法来查询它。
【讨论】: