Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.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
Javascript 在使用HTTP/2时,缩小和连接JS/CSS文件以及对图像使用精灵是否仍能提供性能优势?_Javascript_Css_Minify_Http2 - Fatal编程技术网

Javascript 在使用HTTP/2时,缩小和连接JS/CSS文件以及对图像使用精灵是否仍能提供性能优势?

Javascript 在使用HTTP/2时,缩小和连接JS/CSS文件以及对图像使用精灵是否仍能提供性能优势?,javascript,css,minify,http2,Javascript,Css,Minify,Http2,使用新的HTTP/2协议,对同一服务器重复HTTP请求所产生的开销大大减少 考虑到这一点,缩小和连接JavaScript/CSS文件以及将图像组合到Sprite中是否还有显著的性能优势?或者这些实践在使用HTTP/2时不再有用了?是的,它仍然有用 除了gzip压缩之外,您的页面将减轻重量 假设您使用的是非常慢的GPRS(56Kbps,500ms ping)网络 你有50个小图像,30个Java脚本和20个css文件 这意味着,对于2个并行连接,您必须等待超过100*500ms的请求 现在,每个图

使用新的HTTP/2协议,对同一服务器重复HTTP请求所产生的开销大大减少


考虑到这一点,缩小和连接JavaScript/CSS文件以及将图像组合到Sprite中是否还有显著的性能优势?或者这些实践在使用HTTP/2时不再有用了?

是的,它仍然有用

除了gzip压缩之外,您的页面将减轻重量

假设您使用的是非常慢的GPRS(56Kbps,500ms ping)网络

你有50个小图像,30个Java脚本和20个css文件

这意味着,对于2个并行连接,您必须等待超过100*500ms的请求

现在,每个图像大约有3-4kb。这可能需要几毫秒(5-8?)

现在,CSS文件和Javascript的大小从20Kb到600Kb不等

这将杀死你的网站与一个巨大的传输时间

减少文件传输时间将提高网站加载的“速度”


所以,是的,它仍然有用

它们仍然有用HTTP/2减少了其中一些做法的影响,但并不能消除它们的影响

缩小仍然像以前一样有用。尽管HTTP/2为消息头引入了新的压缩,但这与缩小(关于消息体)无关。消息体的压缩算法是相同的,因此缩小可以节省和以前一样多的带宽

连接和精灵的影响将比以前小,但它们仍然会有一些影响。使用HTTP/1下载多个文件而不是单个文件的最大问题实际上并不是HTTP端的问题:单独请求每个文件时会有一些基于带宽的开销,但与使用一个文件时中断TCP/IP会话的基于时间的开销相比,它显得微不足道,然后为下一个文件启动一个新文件,并对每个要下载的文件重复此操作

HTTP/2最大的关注点是消除基于时间的开销:HTTP/1.1试图通过管道实现这一点,但它没有在浏览器中流行起来(Presto是唯一完全正确的引擎,Presto已经死了)。HTTP/2是另一种尝试,它改进了HTTP/1.1的方法,同时也使这种事情成为非可选的,而且它将更加成功它还通过压缩头消除了在发出多个请求时一些基于带宽的开销,但它不能完全消除这种开销,而且在下载多个文件时,这些请求仍然必须发出(作为单个TCP/IP会话的一部分,因此开销较小,但不是零)。因此,虽然连接和spring的影响相对较小,但仍然有一些影响,特别是在使用许多文件时


另一个要考虑的事情,当涉及到连接和回旋时,就是压缩。strong>类似类型的串联文件往往比单个文件压缩得更好,因为压缩算法可以利用串联数据段之间的相似性类似的原则适用于精灵:将相似的图像放在同一文件的不同区域通常会产生较小的文件,因为图像压缩可以利用不同区域的相似性。

缩小JS仍然可以减小许多符号的大小<代码>充气术语符号手机管理器将变为
\u a
。我发现的一个示例显示JQuery gzip的大小仍然是JQuery.min gzip的两倍

我还想指出的是,虽然你没有暗示其他,但戴斯特罗伊的评论是正确的,事实上与维基百科的解释相矛盾;“连接”JavaScript文件现在可能不再那么有用了。缩小规模仍然有好处。我只是想提一下,以防你碰巧在那里得到一些信息。事实上,如果我不担心卷入编辑大战,我会自己编辑页面


CSS减少符号的机会可能更少。从理论上讲,它只会删除空格和注释。

这可能有点晚了,但我想指出一些应该涵盖的替代点

首先,缩小通常会使用某种形式的JavaScript丑化,这在带宽之外有好处——它可以防止人们轻松分析代码,防止普通用户使用冗长的方法和想法进行恶意操作——即使构建良好的网站也可能会遇到这方面的问题。当然,这不能替代安全性,高级用户总是可以破译丑陋的代码

另一个问题是,并非所有浏览器或连接都将使用HTTP/2,至少不会立即使用——因此,如果某些HTTP/2功能的性能在HTTP/2客户端上几乎不明显,为什么不让那些仍然通过HTTP/1.1连接的用户受益呢


最后,在一天结束时,确定任何东西如何影响服务器速度的最佳方法是对其进行基准测试。

到目前为止,所有答案都默认为您要下载每个页面的所有.CSS和.JS文件。使用http/2并将.CSS和.JS文件分开的一个好处是,您只能下载您需要的文件,而不下载文件总是比高效下载文件更快。

缩小并不是串联:它减少了整个大小。就像精灵通常可以减少调色板中的重复和更好的整体压缩。嗯,好的。但这与问题无关。我问这三种不同的技术在http2协议实施后是否仍然有任何影响。因为缩小和“喷射”减少了总的影响