【发布时间】:2020-02-23 21:51:11
【问题描述】:
在网络世界中,网络浏览器对它必须检索的每个静态文件都发出新请求,因此;样式表、javascript 文件、内联图像 - 都启动新的服务器请求。虽然我对 Web 的了解相当不错,但像 websockets 这样的底层技术在它们的工作方式和能力方面对我来说有些新意。
我的问题是相当理论上的,但我想知道现在是否有可能或将来可以通过 websocket 提供静态文件?考虑到 websockets 是从客户端(网络浏览器)到服务器的持久连接,因此 websockets 可以用于提供一些(如果不是全部)静态内容是有道理的,因为它只是一个连接而不是多个连接。
澄清一点。
我意识到我关于连接的措辞不正确,正如下面 Greg 所指出的那样。但是据我了解,创建 CDN 并在今天仍在使用的原因是为了解决浏览器和/或服务器对并发下载数量有硬性限制的问题,一旦达到该限制,您的请求就会排队,从而增加页面加载时间。我知道它们也是为了提供无 cookie 请求而创建的。所以我的问题真的应该是:“可以使用 websockets 代替 CDN 吗?”
BrowserScope 有一些有用的指标,对于大多数现代浏览器甚至 IE8,似乎每个主机名的请求限制约为 6。但正如我所说,有时人们拥有超过 6 个资源,这是否意味着他们正在排队并减慢页面加载时间,而 websocket 可能会将其减少到一个?
【问题讨论】:
-
您最初的假设是不正确的 - 每个图像等都是单独的 HTTP 事务,不一定是单独的请求。见HTTP persistent connection。
-
现在可以了。 IIRC、网络浏览器和服务器优化了连接的使用,可能是 10 多年前。它们不会为每个文件打开新连接。
-
你是对的,格雷格,我的问题的那部分完全用错了。但是,持久连接仍然存在限制,对吗?因此,如果您有 15 个静态文件(并不是一个很高的数字),那么您将超出限制。是否可以使用 websockets 更快地绕过最大值来提供文件,或者我是否过度考虑了 websockets 的功能?
-
正如我所说,我对底层网络技术的了解相当有限,我想我真的只是这些技术的 API 用户。假设现代浏览器和服务器不能同时下载静态文件并且它仍然像几年前一样是一个瓶颈问题,我错了吗?
-
设置 15 个并发 Web 套接字连接的成本可能比创建少量 http 连接然后对 15 个 GET 进行管道化要高。对于移动客户端来说肯定是这样。
标签: javascript websocket network-protocols