首页 > web前端 > js教程 > 文件捆绑和http/2:重新思考最佳实践

文件捆绑和http/2:重新思考最佳实践

Jennifer Aniston
发布: 2025-02-17 12:47:14
原创
284 人浏览过

File Bundling and HTTP/2: Rethinking Best Practices

欢迎订阅我们的最新JavaScript通讯,点击此处订阅

如今几乎所有JavaScript应用程序都使用构建流程。即使您没有从ES2015或TypeScript进行转译,对代码进行某种形式的连接和压缩处理也已成为标准实践。原因是发出HTTP请求涉及相当大的开销。服务较少、较大的文件比服务许多较小的文件效率更高。随着网络底层协议HTTP/2的下一版本的采用,或许是时候重新考虑最佳实践了。

HTTP/2基于谷歌的SPDY协议,该协议旨在改进页面加载延迟并在现有HTTP 1.1标准的基础上提高安全性。这项新协议的工作始于2012年,第一个开发版本是SPDY的直接副本。最终标准于2015年5月发布,今年5月,谷歌宣布他们将不再在Chrome中支持SPDY。

HTTP/2与其前身有何不同?一个主要区别在于HTTP/2是二进制协议,而不是基于文本的协议。这使其更紧凑、解析效率更高且不易出错。该协议的一个关键优势在于它是多路复用的,这意味着可以在单个连接上传输多个文件。另一个广为宣传的功能是服务器推送,它允许服务器在客户端请求之前将资源传输到客户端,预先填充缓存。

对新协议的支持非常好,包括所有主流浏览器。在服务器端,Apache2、Nginx和Microsoft IIS都支持它,Node.js 5.0及以上版本也支持它。大多数浏览器厂商都表示他们只会在TLS连接上支持HTTP/2,不过随着Let’s Encrypt提供免费SSL证书的出现,这是一个很容易满足的要求。根据W3Techs今年6月收集的数据,大约8.4%的排名前1000万的网站现在支持这项新协议。如果您是Chrome用户,您可以使用HTTP/2和SPDY指示器扩展程序,以便一目了然地了解您访问的哪些网站通过HTTP/2提供服务。

HTTP/2的采用对JavaScript开发人员意味着什么?我们目前将多个文件连接成捆绑包的做法使得浏览器难以有效地缓存我们的代码:更改一个模块中的一行代码需要重新下载整个捆绑包文件。由于HTTP/2的多路复用使请求相对便宜,我们可以选择将代码拆分成更小的捆绑包,并更好地利用缓存,以确保我们的应用程序有效地利用用户的带宽。

但是,如果请求很便宜,我们是否应该完全放弃捆绑?乍一看这似乎很有道理,但HTTP请求的成本并非唯一需要考虑的因素。Web服务器也限制了它们可以多高效地服务大量文件。随着JavaScript社区转向更小、更集中的模块的激增,在没有某种捆绑的情况下将这些文件提供给客户端将不是理想的选择。最重要的是,将文件组合在一起可以实现更好的压缩,从而节省带宽。

那么,您应该何时考虑切换到HTTP/2?答案是,这取决于情况。尽管浏览器支持非常好,但如果您的目标受众仍然停留在旧版本的IE上,那么您就运气不佳了,因此请检查您的访问者统计数据,看看这是否可能使大多数用户受益。我从这一切中得到的启示是,新协议的支持和采用令人惊讶地进展顺利,作为开发人员,这是我们不能忽视的趋势。

您采用什么样的捆绑策略?您是否正在考虑切换到HTTP/2,或者您可能已经切换了?请在评论中告诉我!

关于文件捆绑和HTTP/2的常见问题解答 (FAQs)

HTTP/2相对于HTTP/1的主要优势是什么?

HTTP/2相对于HTTP/1具有多个优势。最显着的一个优势是它能够通过单个TCP连接多路复用多个请求。此功能减少了发出多个请求时可能发生的延迟,从而提高了Web应用程序的整体性能。 HTTP/2还支持标头压缩,从而减少了开销,并且支持服务器推送,允许服务器在客户端请求之前将资源发送到客户端。

HTTP/2中的文件捆绑是如何工作的?

在HTTP/2中,文件捆绑不再像在HTTP/1中那样必要。这是因为HTTP/2可以一次处理单个连接上的多个请求,从而无需将文件捆绑在一起以减少请求数量。相反,可以单独加载文件,这可以提高缓存利用率并简化文件管理和更新。

HTTP/2中的多路复用是什么?

多路复用是HTTP/2的一个关键功能,它允许同时通过单个TCP连接发送多个请求和响应。这是对HTTP/1的重大改进,HTTP/1每次连接只能处理一个请求。多路复用减少了与多个请求相关的延迟,从而提高了Web应用程序的性能。

HTTP/2中的服务器推送是如何工作的?

服务器推送是HTTP/2中的一项功能,它允许服务器在客户端请求之前将资源发送到客户端。这可以通过减少客户端接收和呈现资源所需的时间来提高Web应用程序的性能。服务器可以根据初始请求推送它预计客户端需要的资源。

为什么在HTTP/2中文件捆绑被认为是不好的做法?

在HTTP/2中,文件捆绑被认为是不好的做法,因为它会消除该协议的一些关键优势。 HTTP/2旨在同时处理单个连接上的多个请求,因此将文件捆绑在一起实际上可能会降低性能,因为它会创建更大、更复杂的文件,这些文件需要更长的时间来处理和更新。

HTTP/2对SEO有什么影响?

HTTP/2可能会对SEO产生积极影响,因为它可以提高网站的速度和性能。速度更快的网站往往在搜索引擎结果中排名更高,因为页面加载速度是排名因素。此外,HTTP/2的多路复用和服务器推送等功能可以改善用户体验,这也有助于提高SEO。

HTTP/2如何提高安全性?

HTTP/2通过支持使用HTTPS来提高安全性,HTTPS会加密客户端和服务器之间发送的数据。这可以防止敏感信息在传输过程中被拦截或篡改。此外,HTTP/2的二进制帧机制可以帮助防止针对HTTP/1协议的攻击。

HTTP/2如何影响移动浏览?

HTTP/2可以通过减少延迟和提高Web应用程序的速度来显着改善移动浏览。这对于经常使用较慢互联网连接的移动用户尤其有利。 HTTP/2的多路复用和服务器推送功能还可以提高移动应用程序的性能。

我可以在旧版浏览器中使用HTTP/2吗?

大多数现代浏览器都支持HTTP/2,但旧版浏览器可能不支持。如果客户端不支持HTTP/2,服务器通常会回退到使用HTTP/1。需要注意的是,虽然HTTP/2有很多好处,但它并不是良好编码实践的替代品,而应该作为更广泛的性能策略的一部分来使用。

如何检查我的网站是否正在使用HTTP/2?

有一些在线工具可以检查网站是否正在使用HTTP/2,例如HTTP/2测试。您也可以通过检查浏览器开发者工具中的网络协议来手动检查。如果您的网站没有使用HTTP/2,您可能需要更新您的服务器软件或配置。

以上是文件捆绑和http/2:重新思考最佳实践的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板