Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPDY/HTTP2是否连接响应?_Http_Spdy_Http2 - Fatal编程技术网

SPDY/HTTP2是否连接响应?

SPDY/HTTP2是否连接响应?,http,spdy,http2,Http,Spdy,Http2,我对SPDY/HTTP2有一个问题: 通常,您将多个CSS和JS文件连接到一个文件中,以保存请求并获得更好的性能。我听说SPDY/HTTP2将多个请求组合成一个响应。这是否意味着我不再需要预先连接CSS和JS文件,因为这是由协议处理的 换言之: 我是否可以像在HTTP1中使用一样,在SPDY/HTTP2中使用和?从响应性能的角度来看,这是否相同,但有利于缓存每个文件本身,以便我可以更改moduleB.js并保持moduleA.js缓存?HTTP/2.0允许多路复用,其中多个请求/响应流通过相同的

我对SPDY/HTTP2有一个问题: 通常,您将多个CSS和JS文件连接到一个文件中,以保存请求并获得更好的性能。我听说SPDY/HTTP2将多个请求组合成一个响应。这是否意味着我不再需要预先连接CSS和JS文件,因为这是由协议处理的

换言之:
我是否可以像在HTTP1中使用
一样,在SPDY/HTTP2中使用
?从响应性能的角度来看,这是否相同,但有利于缓存每个文件本身,以便我可以更改
moduleB.js
并保持
moduleA.js
缓存?

HTTP/2.0允许多路复用,其中多个请求/响应流通过相同的TCP连接交换数据

由于创建和启动TCP连接的成本很高,HTTP/2.0的多路复用通常比HTTP/1.1的半并行下载要快,在HTTP/1.1中,浏览器(重新)使用有限数量的TCP连接来执行给定数量的资源请求

但是你的里程数可能会有所不同。测量一下

作为旁注,您可能希望在开发和调试时分别引用所有库,但在部署时将JS/CSS捆绑并缩小为一个文件。

HTTP/2.0还不存在(AFAIK)-它仍然是一个建议的标准。但似乎它将使用与SPDY类似的连接处理

SPDY不连接它们,而是通过同一连接多路传输请求——从网络的角度来看,效果是一样的


是的,您不需要手动合并内容文件,是的,它们将独立缓存。

SPDY3和HTTP2是在同一物理连接上多路复用请求。 但是,即使是多路复用,请求也可能会针对每个资源顺序发送,这会由于往返时间等待而导致严重的速度减慢

SPDY3和HTTP2都有一个称为“资源推送”的功能(也称为“SPDY推送”,不要与“服务器推送”混淆),它允许在没有客户端请求的情况下推送相关资源,而据我所知,提交者是唯一一个这样做的人

您可以在此视频中观看资源推送操作:

通过资源推送,您可以节省额外的往返时间,以获取所有不同的JS文件,并且仍然可以从每个文件的浏览器缓存中获益。
资源连接的全部目的正是为了减少获得所有所需资源所需的往返次数,而资源推送有助于解决这个问题。

对不起,这在一些地方是非常混乱和错误的<代码>创建和启动TCP连接的成本很高-是的,但keepalive和管道技术已经存在很长时间了-浏览器至少在过去12年中一直在重复使用连接。SPDY并没有改变这种行为——它不再需要在单个通道上按顺序传递请求。SPDY可以很容易地使用多个通道-同样要注意破坏TCP慢启动。@symcbean我不打算在HTTP/1.1和2.0之间写一个完整的比较。OP问:在HTTP/1.1上捆绑文件和不在HTTP/2.0上捆绑文件之间有什么区别吗?对此,我解释了多路复用可能给所解释的情况带来的区别。请指出我错在哪里。是否有任何超越hello world的现实世界分析可用于此?