【问题标题】:Is there any concurrent HTTP requests limitation for Silverlight?Silverlight 是否有任何并发​​ HTTP 请求限制?
【发布时间】:2026-01-23 14:30:01
【问题描述】:

我知道 RFC 要求 UserAgent 对单个服务器的最大 http 连接数限制为 2。事实上,大多数浏览器的限制都大于 2。

问题是 Silverlight 是否有这样的限制。它是否遵循托管网络浏览器的限制?还是它有自己的最大连接限制?

【问题讨论】:

  • 我的浏览器一次进行 40 个连接。我可以看到silverlight。

标签: silverlight http user-agent


【解决方案1】:

我现在不知道您的问题的确切答案,但 Silverlight 2 使用浏览器 HTTP 堆栈并且可能仅限于它的功能。在 Silverlight 3 中,您可以在浏览器堆栈和新的 Silverlight 堆栈之间进行选择。我不知道新堆栈是否仅限于同时连接到同一站点的两个连接,但应该可以通过创建一个小型测试程序来检查这一点。

【讨论】:

  • 这是正确的:在 Silverlight 应用程序中使用默认浏览器 HTTP 堆栈意味着您将获得浏览器提供的尽可能多的并发连接(在旧浏览器中通常为 2,在新浏览器中通常为 6-8)。使用新的客户端 HTTP 堆栈总是会给你 6。
  • @KeithMahoney:您应该提供您的评论作为答案,这将是一个很好的候选答案。
【解决方案2】:

SL 将使用浏览器的 http 堆栈来发出请求(在 SL3 中,您可以跳过浏览器本身,但您最终仍将使用仍然受限的 WinINET 等客户端堆栈)。

【讨论】:

    【解决方案3】:

    根据 RFC 2068:

    "使用持久连接的客户端应该限制 他们维护到给定服务器的同时连接。一种 单用户客户端应该与任何 服务器或代理。一个代理应该使用最多 2*N 个连接到另一个 服务器或代理,其中 N 是同时活动的数量 用户。这些指南旨在改善 HTTP 响应时间 并避免 Internet 或其他网络的拥塞。”

    Windows 肯定会在整个操作系统中强制执行此限制,但您可以通过更改位于以下位置的注册表项来解决此问题:

    我的电脑\HKEY_USERS(当前用户 sid)\Software\Microsoft\Windows\CurrentVersion\Internet 设置\

    改变的关键是:

    MaxConnectionsPer1_0Server MaxConnectionsPerServer

    您可以将它们设置为高于默认值的值以增加 Windows 限制。这是特定于操作系统的,并且可能仍然受到浏览器的限制,尽管正如 Anthony 指出的那样,您可以使用 SL3 中的新网络堆栈一起绕过浏览器。

    我认为很好地使用 RFC 规范(我确信这样做是有充分理由的)并将您的同时连接数限制为每台服务器 2 个。如果您需要更多,那么也许您可以寻找更适合您需求的 HTTP 以外的协议。

    【讨论】: