我对SPDY / HTTP2有疑问: 通常,您将多个CSS和JS文件连接到一个文件中以保存请求并获得更好的性能。我听说SPDY / HTTP2将多个请求合并为一个响应。这是否意味着我不再需要预先连接CSS和JS文件,因为这是由协议处理的?
换句话说:
我可以使用<script source="moduleA.js"></script>
和<script source="moduleB.js"></script>
与SPDY / HTTP2一样使用与{1}}使用HTTP1相同的方式吗?从响应性能的角度来看,这是相同的,但是有利于自己缓存每个文件,以便我可以更改<script source="allScripts.js"></script>
并保持moduleB.js
缓存吗?
答案 0 :(得分:4)
HTTP / 2.0不存在(AFAIK) - 它仍然是一个提议的标准。但似乎它会对SPDY使用类似的连接处理。
SPDY不会连接它们,它会在同一个连接上多路复用请求 - 从网络的角度来看效果是一样的。
是的,您不需要手动合并内容文件,是的,它们将被独立缓存。
答案 1 :(得分:3)
SPDY3和HTTP2是在同一物理连接上的多路复用请求。 但即使是多路复用,也可能会为每个资源顺序发送请求,导致由于往返时间等待导致的主要减速。
SPDY3和HTTP2都有一个名为“资源推送”的功能(也称为“SPDY推送”,不要与“服务器推送”混淆),它允许在没有客户端请求相关资源的情况下推送相关资源,并且{ {3}} - 我是一名提交人 - 据我所知,Jetty project是唯一一位提交者。
您可以在此视频中观看资源推送:implements that feature。
使用资源推送,您可以保存额外的往返以获取所有不同的JS文件,并且仍然可以从每个文件的浏览器缓存中受益。 资源连接的全部要点正是为了减少获得所需资源所需的往返次数,而资源推送有助于解决这个问题。
答案 2 :(得分:2)
HTTP / 2.0允许多路复用,其中多个请求/响应流通过同一TCP连接交换数据。
因为创建和启动TCP连接很昂贵,所以HTTP / 2.0的多路复用通常比HTTP / 1.1的半并行下载更快,其中有限量的TCP连接是(re )浏览器用于执行给定数量的资源请求。
但你的里程可能会有所不同。测量它。
作为旁注,您可能希望在开发和调试时分别引用所有库,但在部署时将JS / CSS捆绑并缩小为一个文件。