SPDY/HTTP2是否会连接响应?

6
我有一个关于SPDY/HTTP2的问题: 通常,为了节省请求并提高性能,您会将多个CSS和JS文件合并为一个文件。我听说SPDY/HTTP2将多个请求组合成一个响应。这是否意味着我不再需要预先将CSS和JS文件合并,因为协议会处理这些细节?
换句话说: 在SPDY/HTTP2中,我能否像在HTTP1中使用<script source="allScripts.js"></script>一样使用<script source="moduleA.js"></script><script source="moduleB.js"></script>?在响应性能方面是否相同,但具有单独缓存每个文件的好处,以便我可以更改moduleB.js并保留moduleA.js的缓存?
3个回答

4

据我所知,HTTP/2.0目前还不存在,仍然是一个拟议中的标准。但很可能它将使用类似SPDY的连接处理方式。

SPDY不会将它们连接起来,而是将请求在同一连接上进行多路复用——从网络的角度来看,效果是相同的。

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


1
这方面是否有超越“Hello World”的真实世界分析可用? - Marc

3
SPDY3和HTTP2可以在同一物理连接上复用请求。但即使是复用的请求,每个资源仍可能按顺序发送,由于往返等待时间而导致严重减速。
SPDY3和HTTP2都有一个名为“资源推送”的功能(也称为“SPDY推送”,不要与“服务器推送”混淆),允许推送相关资源而无需客户端请求,而Jetty项目 - 我是其中的一员 - 是我所知道的唯一实现该功能的项目。
您可以在此视频中观看资源推送的演示:http://webtide.intalio.com/2012/10/spdy-push-demo-from-javaone-2012/
通过资源推送,您可以节省获取所有不同JS文件所需的额外往返次数,并仍然从浏览器缓存中获得每个单独文件的好处。资源串联的整个目的正是为了减少获取所有所需资源所需的往返次数,而资源推送有助于解决这个问题。

2
HTTP/2.0允许多路复用,即多个请求/响应流在同一TCP连接上交换数据。
由于创建和启动TCP连接很耗费资源,HTTP/2.0的多路复用通常比HTTP/1.1的半并行下载更快,后者通过浏览器重复使用有限数量的TCP连接来执行一定量的资源请求。
但是您的实际情况可能会有所不同。请进行测试以确定效果。
另外,开发和调试时,您可能希望单独引用所有库,但在部署时将JS/CSS捆绑并压缩成一个文件。

抱歉 - 但这里有几个地方非常混乱和错误。创建和启动TCP连接是昂贵的 - 是的,但保持活动状态和流水线技术已经存在很长时间了 - 浏览器至少在过去的12年中一直在重用连接。SPDY不改变这种行为 - 它消除了在单个通道上按顺序传递请求的需要。SPDY可以很容易地使用多个通道 - 具有破坏TCP慢启动的相同警告。 - symcbean
@symcbean,我并没有打算写一篇关于HTTP/1.1和2.0的全面比较。OP问:在HTTP/1.1上捆绑文件和在HTTP/2.0上不捆绑文件是否会有任何区别,我回答了多路复用可以为所述情况带来的差异。请指出我的错误之处。 - CodeCaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接